[Мы решаем ваши проблемы с Си и Паскалем ]
Главная » Статьи » Задачи с acm.timus.ru » Пакет решений на 15.03.08

1060
Var
  C: Char;
  I,J,R,S: LongInt;
  M,T: Array[0..5,0..5] of Boolean;
  B,A: Array[1..17] of LongInt;
  X,Y: LongInt;
Begin
  R:=17;
  FillChar(A,SizeOf(A),0);
  For I:=1 to 4 do begin
    For J:=1 to 4 do begin
      Read(C);
      If C='w' then M[I,J]:=True
               else M[I,J]:=False;
    End;
    Readln;
  End;
  While A[17]=0 do begin
    I:=1;
    Inc(A[1]);
    While A[I]=2 do begin
      A[I]:=0;
      Inc(I);
      Inc(A[I]);
    End;
    T:=M;
    For I:=1 to 16 do
      If A[I]=1 then begin
        X:=(I-1) mod 4+1;
        Y:=(I-1) div 4+1;
        T[X,Y]:=Not T[X,Y];
        T[X+1,Y]:=Not T[X+1,Y];
        T[X,Y+1]:=Not T[X,Y+1];
        T[X-1,Y]:=Not T[X-1,Y];
        T[X,Y-1]:=Not T[X,Y-1];
      End;
    For I:=1 to 16 do
      If T[(I-1) mod 4+1,(I-1) div 4+1]<>T[4,4] then break;
    If I=16 then begin
      S:=0;
      For I:=1 to 16 do
        S:=S+A[I];
      If R>S then begin
        R:=S;
        B:=A;
      End;
    End;
  End;
  If R=17 then Writeln('Impossible')
          else Writeln(R);
End.
Категория: Пакет решений на 15.03.08 | Добавил: solver (15.03.2008)
Просмотров: 745