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

Обсуждение задачи 1437. ACM для ГСМ

ADMINS! What is Test#6?
Послано xurshid_n 20 ноя 2006 11:23
My program always WA in Test#6. What is Test#6?







program Problem;



function min( x, y: integer ): integer;
begin
   if x < y then  result:=x else result:=y;
end;
function max(x, y: integer): integer;
begin
    if x > y then result := x else result := y;
end;
type

   TKan = array[0..2]of byte;
var
   Ok: array[0..255, 0..255, 0..255 ] of Boolean;
   R: array[1..1000] of boolean;
   K, Y: TKan;
   Count: Integer;

procedure Calc(X: TKan );
var
   d, i, j: byte;
begin
    if not Ok[X[0], X[1], X[2]] then
     begin
        Ok[X[0], X[1], X[2]] := true;
        for i := 1 to 7 do
         R[X[0] * (i and 1) + X[1] * ((i shr 1) and 1) + X[2] * ( ( i shr 2 ) and 1)] := true;
        for i := 0 to 2 do
         if X[i] = 0 then
          begin
             X[i] := K[i];
               Calc(X);
             X[i] := 0;
          end;

        for i := 0 to 2 do
         for j := 0 to 2 do
          if i <> j then
           begin
              d := min(K[i] - X[i], X[j]);
              if d = 0 then continue;
              inc(X[i], d);
              dec(X[j], d);

              Calc(X);

              dec(X[i], d);
              inc(X[j], d);
           end;

      end;
end;
var
   a: integer;
begin

    FillChar(R, Sizeof(R),0);
    FillChar(Ok, Sizeof(Ok),0);
    read(K[0], K[1], K[2]);
    Y[0] := 0;
    Y[1] := 0;
    Y[2] := 0;
    Calc(Y);
    Count := 0;

    for  a := 1 to 1000 do
         if R[a] then
          begin
         // writeln(a);
          inc(count);
          end;
     writeln(count);
end.