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

    В первой строке входного файла 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.

Ответы 1

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

    readln(input,s);s:=s+' ';f:=0;for i:= 1 to length(s) do beginif 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 beginreadln(input,sait[i]);readln(input,tegs[i]);readln(input,pop[i]);

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

    • Автор:

      wifeylsuk
    • 7 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years