Поиск по этому блогу

воскресенье, 26 ноября 2017 г.

Задача "Лентяй"

(Время: 1 сек. Память: 16 Мб Сложность: 21%)
Студент Валера являет собой классический пример лентяя. На занятия он практически не ходит, и только в конце семестра появляется в университете и сдает ”хвосты”. Его заветная мечта: найти такой день, когда можно будет сдать сразу все долги. У него есть расписание работы преподавателей, из которого точно известно, с какого и по какой день месяца каждый преподаватель ежедневно будет доступен.

Помогите Валере написать программу, которая по расписанию будет определять, сможет ли Валера сдать все долги за один день или нет.

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

В первой строке входного файла INPUT.TXT содержится натуральное число N – количество предметов, которые нужно сдать Валере (N ≤ 100). Далее идет N строк, каждая из которых состоит из двух чисел A и B, задающих отрезок работы очередного преподавателя (1 ≤ A ≤ B ≤ 31).

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

В выходной файл OUTPUT.TXT выведите «YES», если возможно встретить всех преподавателей за один день, или «NO», если это сделать невозможно.

Примеры
INPUT.TXT
OUTPUT.TXT
1
1
1 2
YES
2
2
1 2
3 4
NO
3
3
1 8
3 5
4 9
YES

Решение
var a,b,m,k,i,n:integer;
s:array[1..100,1..2] of integer;
     f,f1:text; 
     fl:boolean;
  begin
    assign(f,'input.txt'); 
    reset(f); assign(f1,'output.txt'); 
    rewrite(f1);
    readln(f,n);fl:=false;
   for i:=1 to n do
   readln(f,s[i,1],s[i,2]);
   if n=1 then write(f1,'YES') else begin
    a:=s[1,1];b:=s[1,2];
    for i:=2 to n do
    begin
    k:=s[i,1];m:=s[i,2];
    if ((k<a) and (m<a)) or ((k>b) and (m>b)) then fl:=true else
    begin
    if a<k then a:=k;
    if b>m then b:=m;
    end
    end;
    if fl then write(f1,'NO') else write(f1,'YES'); 
    end; close(f1); close(f);
  end.

Комментариев нет:

Отправить комментарий