Решение задачи «A» третьего квалификационного раунда Russian Code Cup (2013 год)


Задача «А». Экзамен

Источник: Russian Code Cup 2013

Игорь — хороший программист, но большой разгильдяй. Проиграв весь семестр в компьютерные игры и  просмотрев очень много сериалов и фильмов, он неожиданно понял, что пришло время сессии, которую надо закрывать, чтобы не вылететь из университета

Первым экзаменом у Игоря будет экзамен по экстремальному программированию. Суть экзамена заключается в том, что в некоторое время Sпоявляется условие задачи, которую должен решить Игорь до момента времени F. Экзамен длится не менее секунды и не более суток.Если Игорь сдает задачу за отведённое время, то он сдает экзамен. Если он не успеет сдать ее в течение часа после конца экзамена, то он заваливает экзамен. Иначе помимо решения задачи приходится писать тестирование.

Игорь знает за сколько минут напишет программу и теперь хочет узнать, сможет ли он сдать экзамен, либо ему придётся писать тест, либо  он вообще экзамен не сдаст.

Формат входных данных

Первая строка входных данных содержит единственное целое число n (1 ≤ n ≤ 104) —количество тестов.Следующие n строк содержат S и F в формате hh:mm:ss, а также целое число k   (1 ≤ k ≤ 2000) — время начала и конца экзамена и время в минутах, за которое Игорь напишет программу.

Гарантируется, что время в тестах задано корректно.

Формат выходных данных

Для каждого теста в отдельной строке выведите ответ на задачу. Если Игорь сдаст экзамен, то выведите Perfect. Если Игорю придётся писать тест, то выведите Test. Иначе выведите Fail.

Пример

Входные данные

4
01:02:03 01:05:03 3
23:12:14 00:14:59 91
00:00:00 00:00:00 1000
01:00:00 05:00:00 666

Выходные данные

Perfect
Test
Perfect
Fail

Решение задачи на C#

using System;

class Exam
{
  static void Main()
  {
    UInt16 n = UInt16.Parse(Console.ReadLine());
    char[] sep = new char[] { ' ' };
    string[] data;
    UInt16 k;
    DateTime S, F, K, T;
    for (UInt16 i = 0; i < n; i++)
    {
      data = Console.ReadLine().Split(sep);
      S = DateTime.Parse(data[0]);
      F = DateTime.Parse(data[1]);
      k = UInt16.Parse(data[2]);
      if (F <= S)
        F = F.AddDays(1);
      K = S.AddMinutes(k);
      T = F.AddHours(1);
      if (K <= F)
      {
        Console.WriteLine("Perfect");
        continue;
      }
      if (K <= T)
      {
        Console.WriteLine("Test");
        continue;
      }
      Console.WriteLine("Fail");
    }
  }
}
Реклама
Запись опубликована в рубрике программирование с метками , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s