Решение олимпиадных задач Учитель информатики МБОУ«СОШ 23 с углубленным изучением отдельных предметов» Энгельсского муниципального района Саратовской области Пуликова Светлана Алексеевна
Незванные гости За день к школьнику Васе пришло N незваных гостей. Вася записал время прихода и ухода каждого из гостей. По этим данным определите, какое максимальное число гостей одновременно находилось дома у Васи. Входные данные Первая строка входных данных содержит натуральное число N – количество пришедших гостей. 0
пример время гости время гости
1-й гость время гости 1111
2-й гость время гости 11221
3-й гость время гости
4-й гость время гости 11232
Результат время гости 11232
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.
012…100000
012…
012… элементов
012… элементов 012…15000
012… …15000 Максимум M[1]
012… …15000 Максимум M[2]
012… …15000 Максимум M[3]
012… …15000 Максимум M[4]
012… …15000 Максимум M[5]
012… …15000 Максимум M[6]
012… …15000 Максимум M[7]
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.
Спасибо за внимание.