Решение олимпиадных задач Учитель информатики МБОУ«СОШ № 23 с углубленным изучением отдельных предметов» Энгельсского муниципального района Саратовской области Пуликова Светлана Алексеевна Незванные гости За день к школьнику Васе пришло N незванных гостей. Вася записал время прихода и ухода каждого из гостей. По этим данным определите, какое максимальное число гостей одновременно находилось дома у Васи. Входные данные • Первая строка входных данных содержит натуральное число N – количество пришедших гостей. 0<N≤100000. Далее идет N строчек, каждая из которых содержит два неотрицательных целых числа: время прихода и ухода каждого гостя. Время прихода каждого гостя не превосходит его время ухода и оба времени не превосходят 100000. Считается, что гость находится дома у Васи с момента прихода до момента ухода включительно. Результат • Программа должна вывести единственное число – максимальное количество гостей, которые одновременно находились дома у Васи. Пример • Вход 4 1 4 3 5 0 2 4 5 Выход 3 пример время 0 гости 1 2 3 4 5 1-й гость время 0 1 2 3 4 гости 1 1 1 1 5 2-й гость время 0 1 2 3 4 5 гости 1 1 2 2 1 3-й гость время 0 1 2 3 4 5 гости 1 2 2 2 2 1 4-й гость время 0 1 2 3 4 5 гости 1 1 2 3 2 Результат время 0 1 2 3 4 5 гости 1 1 2 3 2 Program z3; Const c=15000; Var s:array [0..c] of longint; n,j,i,t1,t2,Max:integer; Begin Assign (input,'input.txt'); Assign (output,'output.txt'); Reset (input); Rewrite (output); Readln (n); For i:=1 to c do s[i]:=0; For i:=1 to n do begin Readln (t1,t2); For j:=t1 to t2 do s[j]:=s[j]+1; End; Max:=0; For i:=1 to c do If s[i]>Max then Max:=s[i]; Write (Max); Close (input); Close (output); End. 0 1 2 … 100000 0 1 2 … 1 100000 2 3 4 5 6 7 0 1 2 … 1 100000 2 15000 элементов 3 4 5 6 7 0 1 2 … 1 100000 2 3 4 5 6 7 15000 элементов 0 1 2 … 15000 0 1 2 … 100000 2 1 3 4 5 6 7 Максимум M[1] 0 1 2 … 15000 0 1 2 … 1 100000 2 3 4 5 6 7 Максимум M[2] 0 1 2 … 15000 0 1 2 … 1 100000 2 3 4 5 6 7 Максимум M[3] 0 1 2 … 15000 0 1 2 … 1 100000 2 3 4 5 6 7 Максимум M[4] 0 1 2 … 15000 0 1 2 … 1 100000 2 3 4 5 6 7 Максимум M[5] 0 1 2 … 15000 0 1 2 … 1 100000 2 3 4 5 6 7 Максимум M[6] 0 1 2 … 15000 0 1 2 … 1 100000 2 3 4 5 6 7 Максимум M[7] 0 1 2 … 15000 Program z3f; Const c=15000; Var s:array [0..c] of longint; m:array[1..7]of longint; n,j,i,t1,t2,Max,t1f,t2f:longint; pf:boolean; f1,f2:text; k:integer; Begin Assign (input,'input.txt'); Assign (output,'output.txt'); Assign (f1,'f1.txt'); Assign (f2,'f2.txt'); Reset (input); Rewrite (output); Rewrite (f1); Readln (n); pf:=false; For i:=1 to c do s[i]:=0; For i:=1 to n do begin Readln (t1,t2); If t1>c then begin pf:=true; t1f:=t1-c; t2f:=t2-c;writeln(f1,t1f,' ',t2f) end else begin if t2>c then begin pf:=true;t1f:=1; t2f:=t2-c;t2:=c; writeln(f1,t1f,' ',t2f); end; For j:=t1 to t2 do s[j]:=s[j]+1; End; end; Max:=0; For i:=1 to c do If s[i]>Max then Max:=s[i]; m[1]:=max; close(f1); for k:=1 to 6 do begin reset(f1); rewrite(f2); pf:=false; for i:= 1 to c do s[i]:=0; While not eof(f1) Do begin Readln (f1,t1,t2); If t1>c then begin pf:=true; t1f:=t1-c; t2f:=t2-c;writeln(f2,t1f,' ',t2f) end else begin if t2>c then begin pf:=true;t1f:=1; t2f:=t2-c;t2:=c; writeln(f2,t1f,' ',t2f); end; For j:=t1 to t2 do s[j]:=s[j]+1; End; end; Max:=0; For i:=1 to c do If s[i]>Max then Max:=s[i]; m[k+1]:=max; close(f1); close(f2); reset(f2); rewrite(f1); While not eof(f2) do begin readln(f2,t1f,t2f); writeln(f1,t1f,' ',t2f); end; close(f2); close(f1); end; max:=m[1]; for i:=1 to 7 do if m[i]>max then max:=m[i]; Write (Max); Close (input); Close (output); End. Спасибо за внимание.