Одной из задач, возникающей при разработке поисковых систем, является поиск самых...

0 голосов
44 просмотров

Одной из задач, возникающей при разработке поисковых систем, является поиск самых популярных сайтов по ключевым словам (тегам), описывающим сайт. Дан список сайтов. Про каждый сайт известны набор тегов сайта и его популярность. Есть запрос в виде набора тегов. На запрос необходимо выдать самый популярный сайт, у которого в описании встречаются все теги из запроса.
Формат входного файла

В первой строке входного файла input.txt находится набор тегов, разделённых ровно одним пробелом, количество тегов не превосходит 5. Тегом назовём такую строку, которая содержит только строчные латинские буквы и ее длина не превосходит 10 символов. В следующей строке дано число N (1 ≤ N ≤ 20)— количество сайтов.

Каждый сайт описывается тремя строками. В первой строке название сайта. Название сайта состоит только из строчных латинских букв и точки. Длина названия сайта не превосходит 15 символов. Во второй строке набор тегов сайта, разделенных пробелами. Количество тегов не превосходит 10. В третьей строке число Ai(1 ≤ Ai ≤ 1000000)— популярность сайта.
Формат выходного файла

В выходной файл output.txt требуется вывести любой самый популярный сайт, у которых встречаются все теги из запроса. Гарантируется, что найдётся, хотя бы один сайт отвечающий запросу.
Пример входных и выходных данных

Input.txt
football volleyball
5
sportbox.ru
sport football volleyball basketball swimming hockey
5000
championat.com
sport football volleyball basketball hockey
4000
soccer.ru
sport football
6000
sport.ru
sport football vоlleyball
1000
sports.ru
sport football volleyball basketball swimming hockey
2000

Output.txt

sportbox.ru

Я задачу решила, на мои тесты работает.

Однако, когда я отправляю ее тестировать на сайт, вылезает что программа выдала неправильный ответ.

program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils;

var
s,r:string;
tegs,sait,d,x1:array[1..255] of string;
pop,l,x:array[1..100000] of integer;
i,j,k,n,f,max,max1:integer;
begin
assign(input,'Input.txt');reset(input);
assign(output,'Output.txt');rewrite(output);
readln(s);s:=s+' ';f:=0;
for i:= 1 to length(s) do begin
if s[i]<>' ' then r:=r+s[i];
if s[i]=' ' then begin k:=k+1;d[k]:=r;r:='';end;
end;
readln(n);
for i:= 1 to n do begin
readln(sait[i]);
readln(tegs[i]);
readln(pop[i]);
end;
for i:= 1 to n do begin
for j:= 1 to k do begin
if pos(d[j],tegs[i])<>0 then f:=f+1;
end;
l[i]:=f;
f:=0;
end;
max:=0;max1:=0;
f:=0;
for i:=1 to n do
if l[i]>max then max:=l[i];
for i:=1 to n do
if l[i]=max then begin inc(f);x[f]:=pop[i];x1[f]:=sait[i];end;
for i:=1 to f do
if x[i]>max1 then begin max:=x[i];k:=i;end;
writeln(x1[k]);
close(input);close(output);
end.


Информатика (18 баллов) | 44 просмотров
Дан 1 ответ
0 голосов

чтение из файла обычно пишется readln(f,s) где f имя файловой переменной так что скорей всего нужно вставить

readln(input,s);s:=s+' ';f:=0;
for i:= 1 to length(s) do begin
if s[i]<>' ' then r:=r+s[i];
if s[i]=' ' then begin k:=k+1;d[k]:=r;r:='';end;
end;
readln(input,n);
for i:= 1 to n do begin
readln(input,sait[i]);
readln(input,tegs[i]);
readln(input,pop[i]);

соответственно и запись в файл write(f,s)

(1.5k баллов)