ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1208. Соревнование легендарных команд

Why I got WA????
Послано DDNEW 12 янв 2003 13:07
var a:array[1..54]of string[20];
    team:array[1..18,1..3]of integer;
    t:array[1..54]of boolean;
    max,n,i,j,k,kk:integer;
    ch:char;
    st,st1:string;

 procedure dfs(s,k:integer);
 var i:integer;

  function Ok:boolean;
  var j:integer;

  begin
       for j:=1 to 3 do
         if t[team[i,j]] then
           begin
                ok:=false;
                exit;
           end;
       Ok:=true;
  end;

 begin
      for i:=k+1 to n do
          if ok then
            begin
                 t[team[i,1]]:=true;
                 t[team[i,2]]:=true;
                 t[team[i,3]]:=true;
                 dfs(s+1,i);
                 if s>max then max:=s;
                 t[team[i,1]]:=false;
                 t[team[i,2]]:=false;
                 t[team[i,3]]:=false;
            end;
 end;

begin
     close(input);
     assign(input,'a.in');
     reset(input);
     for i:=1 to 54 do a[i]:='';
     readln(n);
     kk:=0;
     for i:=1 to n do
       begin
            readln(st);
            st:=st+' ';
            j:=1;
            while j<=3 do
              begin
                   while (j<=3)and(st[1]<>' ')do
                     begin
                          st1:=st1+st[1];
                          delete(st,1,1);
                     end;
                   delete(st,1,1);
                   for k:=1 to kk+1 do
                     if st1=a[k] then break;
                   team[i,j]:=k;
                   if k=kk+1 then begin a[k]:=st1;inc(kk);end;
                   st1:='';
                   inc(j);
              end;
       end;
     max:=0;
     fillchar(t,sizeof(t),false);
     dfs(1,0);
     writeln(max);
end.
I'm sorry! Here is my program
Послано DDNEW 12 янв 2003 13:09
> var a:array[1..54]of string[20];
>     team:array[1..18,1..3]of integer;
>     t:array[1..54]of boolean;
>     max,n,i,j,k,kk:integer;
>     ch:char;
>     st,st1:string;
>
>  procedure dfs(s,k:integer);
>  var i:integer;
>
>   function Ok:boolean;
>   var j:integer;
>
>   begin
>        for j:=1 to 3 do
>          if t[team[i,j]] then
>            begin
>                 ok:=false;
>                 exit;
>            end;
>        Ok:=true;
>   end;
>
>  begin
>       for i:=k+1 to n do
>           if ok then
>             begin
>                  t[team[i,1]]:=true;
>                  t[team[i,2]]:=true;
>                  t[team[i,3]]:=true;
>                  dfs(s+1,i);
>                  if s>max then max:=s;
>                  t[team[i,1]]:=false;
>                  t[team[i,2]]:=false;
>                  t[team[i,3]]:=false;
>             end;
>  end;
>
> begin
>      for i:=1 to 54 do a[i]:='';
>      readln(n);
>      kk:=0;
>      for i:=1 to n do
>        begin
>             readln(st);
>             st:=st+' ';
>             j:=1;
>             while j<=3 do
>               begin
>                    while (j<=3)and(st[1]<>' ')do
>                      begin
>                           st1:=st1+st[1];
>                           delete(st,1,1);
>                      end;
>                    delete(st,1,1);
>                    for k:=1 to kk+1 do
>                      if st1=a[k] then break;
>                    team[i,j]:=k;
>                    if k=kk+1 then begin a[k]:=st1;inc(kk);end;
>                    st1:='';
>                    inc(j);
>               end;
>        end;
>      max:=0;
>      fillchar(t,sizeof(t),false);
>      dfs(1,0);
>      writeln(max);
> end.