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

Обсуждение задачи 1002. Телефонные номера

wa1?
Послано zsyzzsx2 25 янв 2010 17:55
I passed the test in the problem.
But why I couldn't pass the  first test?
Here are my program:
var
  s,s2:string;
  n,i,j,k,l:longint;
  s1,c:array[1..50000]of string;
  m:array[1..100,1..100]of integer;
  b:boolean;
function xun(len:longint):boolean;
  var
    j:longint;
  begin
    if j=1
    then begin
           xun:=true;
           exit;
         end;
    for j:=len-1 downto 1 do
      begin
        if m[j,len]>0
        then begin
               if xun(j)
               then begin
                      write(s1[m[j,len]],' ');
                    end;
             end;
      end;
  end;
begin
  //assign(input,'1002.in');reset(input);
  readln(s);
  repeat
  l:=length(s);
  readln(n);
  for i:=1 to n do
    begin
      b:=false;
      readln(s1[i]);
      for j:=1 to length(s1[i]) do
        case s1[i][j] of
          'i','j':c[i]:=c[i]+'1';
          'a','b','c':c[i]:=c[i]+'2';
          'd','e','f':c[i]:=c[i]+'3';
          'g','h':c[i]:=c[i]+'4';
          'k','l':c[i]:=c[i]+'5';
          'm','n':c[i]:=c[i]+'6';
          'p','r','s':c[i]:=c[i]+'7';
          't','u','v':c[i]:=c[i]+'8';
          'w','x','y':c[i]:=c[i]+'9';
          'o','q','z':c[i]:=c[i]+'0';
        end;
      for j:=1 to l-length(c[i])+1 do
        begin
          s2:=copy(s,j,length(c[i]));
          if s2=c[i]
          then m[j,j+length(c[i])-1]:=i;
        end;
    end;
    for j:=length(s)-1 downto 1 do
      begin
        if m[j,length(s)]>0
        then begin
               if xun(j-1)
               then begin
                      b:=true;
                      write(s1[m[j,length(s)]]);
                      break;
                    end;
             end;
      end;
    if b=false
    then write('No solution.');
    readln(s);
    writeln;
      fillchar(s1,sizeof(s1),0);
      fillchar(c,sizeof(c),0);
      fillchar(m,sizeof(m),0);
  until s='-1';
  //close(input);
end.