Один поисковый сайт ведёт рейтинг сайтов. Значение рейтинга — количество посещений этого сайта подряд. Вы получаете последовательность адресов и должны выдать сайт с самым большим рейтингом и его рейтинг. При равенстве рейтингов выводить адрес, который посетился раньше — Pascal(Паскаль)

Порядок ввода исходных данных:

T1 - первый адрес
...
Tn - n-ый адрес
Ввод оканчивается пустой строкой.
Порядок вывода результатов:

T, N - адрес, рейтинг
Ограничения:

Длина адреса <=30, количество адресов <= 2000, количество различных адресов <= 10.
type
 Tz = record
       Url: string[30];
       Rate:  real;
      end;
Var
 F: text;
 Z: array[0..10] of Tz;
 N, i: byte;
Begin
 Assign(F,'input.txt');
 Reset(F);
 N:=0;
 Z[0].Rate:=0;
 While not EOF(F) do
  Begin
   Readln(F,Z[0].Url);
   For i:=1 to N do
    If Z[i].Url = Z[0].Url then
     Begin
      Z[i].Rate:=Z[i].Rate+1;
      Break;
     End;
   If (N=0) or ((i=N) and (Z[i].Url<>Z[0].Url)) then
    Begin
     inc(N);
     Z[N].Url:=Z[0].Url;
     Z[N].Rate:=1;
    End;
   Z[0].Rate:=Z[0].Rate+1;
  End;
 Close(F);
 Z[1].Rate:= (Z[1].Rate/Z[0].Rate)*100;
 Z[0].Url:=' ';
 For i:=2 to N do
  Begin
   Z[i].Rate:= (Z[i].Rate/Z[0].Rate)*100;
   If Z[i].Rate>Z[i-1].Rate then Z[0].Url:=Z[0].Url+' ';
  End;
 Assign(F,'output.txt');
 Rewrite(F);
 N:=length(Z[0].Url);
 Writeln(F,Z[N].Url,', ',Z[N].Rate:1:2,'%');
 Close(F);
End.

Leave a Comment

8 + 2 =