
6c459f4a8e3e49e44ed741095ff14c73.ppt
- Количество слайдов: 25
Решение олимпиадны х задач Учитель информатики МБОУ «СОШ № 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 5
2 -й гость время 0 1 2 3 4 5 гости 1 1 2 2 1
3 -й гость время 0 1 2 3 4 5 гости 1 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 z 3; Const c=15000; Var s: array [0. . c] of longint; n, j, i, t 1, t 2, 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 (t 1, t 2); For j: =t 1 to t 2 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 z 3 f; Const c=15000; Var s: array [0. . c] of longint; m: array[1. . 7]of longint; n, j, i, t 1, t 2, Max, t 1 f, t 2 f: longint; pf: boolean; f 1, f 2: text; k: integer; Begin Assign (input, 'input. txt'); Assign (output, 'output. txt'); Assign (f 1, 'f 1. txt'); Assign (f 2, 'f 2. txt'); Reset (input); Rewrite (output); Rewrite (f 1); Readln (n); pf: =false; For i: =1 to c do s[i]: =0;
For i: =1 to n do begin Readln (t 1, t 2); If t 1>c then begin pf: =true; t 1 f: =t 1 -c; t 2 f: =t 2 -c; writeln(f 1, t 1 f, ' ', t 2 f) end else begin if t 2>c then begin pf: =true; t 1 f: =1; t 2 f: =t 2 -c; t 2: =c; writeln(f 1, t 1 f, ' ', t 2 f); end; For j: =t 1 to t 2 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(f 1); for k: =1 to 6 do begin reset(f 1); rewrite(f 2); pf: =false; for i: = 1 to c do s[i]: =0;
While not eof(f 1) Do begin Readln (f 1, t 2); If t 1>c then begin pf: =true; t 1 f: =t 1 -c; t 2 f: =t 2 -c; writeln(f 2, t 1 f, ' ', t 2 f) end else begin if t 2>c then begin pf: =true; t 1 f: =1; t 2 f: =t 2 -c; t 2: =c; writeln(f 2, t 1 f, ' ', t 2 f); end; For j: =t 1 to t 2 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(f 1); close(f 2); reset(f 2); rewrite(f 1);
While not eof(f 2) do begin readln(f 2, t 1 f, t 2 f); writeln(f 1, t 1 f, ' ', t 2 f); end; close(f 2); close(f 1); 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.
Спасибо за внимание.
6c459f4a8e3e49e44ed741095ff14c73.ppt