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

Обсуждение задачи 1127. Кубики

Why I get WA? Pelase, help me!!!!!!!
Послано Revenger and NSC 27 дек 2001 01:57
My program:

Program t1127;

Const P:array[1..24,1..6]of integer= {all combinations}
       ( (6,4,3,1,5,2),
         (3,5,4,1,6,2),
         (4,6,5,1,3,2),
         (5,3,6,1,4,2),
         (6,4,5,2,3,1),
         (3,5,6,2,4,1),
         (4,6,3,2,5,1),
         (5,3,4,2,6,1),
         (1,2,6,3,4,5),
         (6,4,2,3,1,5),
         (2,1,4,3,6,5),
         (4,6,1,3,2,5),
         (1,2,4,5,6,3),
         (6,4,1,5,2,3),
         (2,1,6,5,4,3),
         (4,6,2,5,1,3),
         (1,2,3,4,5,6),
         (3,5,2,4,1,6),
         (2,1,5,4,3,6),
         (5,3,1,4,2,6),
         (1,2,5,6,3,4),
         (3,5,1,6,2,4),
         (2,1,3,6,5,4),
         (5,3,2,6,1,4)  );
   MaxN=1000;

Var Cube      :array[1..MaxN,1..6]of char;
    Tmp       :array[1..6]of char;
    ACube     :array[1..MaxN,1..24]of string[4];
    yet       :array[1..MaxN,1..24]of boolean;
    N,i,j,k   :integer;
    max,ik,jk :integer;
    m         :integer;
    ch        :char;

begin
Read(n);
for i:=1 to N do
 for j:=1 to 6 do begin
  read(ch);
  while (ch=#10)or(ch=#13)or(ch=#32) do read(ch);
  Cube[i,j]:=ch;
 end;
for i:=1 to N do
 for j:=1 to 24 do begin
  for k:=1 to 6 do tmp[k]:=cube[i,p[j,k]];
  ACube[i,j]:='';
  ACube[i,j]:=tmp[1]+tmp[2]+tmp[3]+tmp[4];
 end;
m:=0;
for i:=1 to N do
 for j:=1 to 24 do
  yet[i,j]:=true;
for i:=1 to N do
 for j:=1 to 24 do if yet[i,j] then begin
  yet[i,j]:=false;
  max:=1;
  for ik:=1 to N do if ik<>i then
   for jk:=1 to 24 do
    if ((acube[i,j][1]=acube[ik,jk][1])and(acube[i,j][4]=acube[ik,jk]
[4]))or
       ((acube[i,j][1]=acube[ik,jk][4])and(acube[i,j][4]=acube[ik,jk]
[1])) then
    if ((acube[i,j][2]=acube[ik,jk][2])and(acube[i,j][3]=acube[ik,jk]
[3]))or
       ((acube[i,j][2]=acube[ik,jk][3])and(acube[i,j][3]=acube[ik,jk]
[2]))
       then begin
     yet[ik,jk]:=false;
     max:=max+1;
     break;
    end;
  if max>m then m:=max;
 end;
writeln(m);
end.