№1125
http://acm.timus.ru/problem.aspx?space=1&num=1125
ЖМИ ДАЛЕЕ>>>
РЕШЕНИЕ:
PASCAL
Var a:array[1..50,1..50] of boolean;
b:array[1..50,1..50] of LOngint;
v:array[1..500] of record x,y: LongInt; End;
ch:Char;
l:Real;
R: Boolean;
i,j,i1,j1,n,m,t,k:LongInt;
Begin
FillChar(b,SizeOf(b),0);
FillChar(a,SizeOf(a),0);
FillChar(v,SizeOf(v),0);
K:=0;
For I:=1 to 50 do
For J:=1 to 50 do
If Sqrt(i*i+j*j)=Int(Sqrt(i*i+j*j)) then begin
Inc(K);
V[K].x:=I;
V[K].y:=J;
End;
Readln(n,m);
For i:=1 to n do begin
For j:=1 to m do begin
Read(ch);
If ch='W' then A[i,j]:=True else A[i,j]:=False;
End;
Readln;
End;
For i:=1 to n do
For j:=1 to m do begin
Read(T);
B[i,j]:=T mod 2;
End;
For i:=1 to n do begin
For j:=1 to m do begin
If B[i,j]=1 then begin
For i1:=1 to k do begin
if i+v[i1].x<=n then begin
if j+v[i1].y<=m then A[i+v[i1].x,j+v[i1].y]:=not A[i+v[i1].x,j+v[i1].y];
if j-v[i1].y>=1 then A[i+v[i1].x,j-v[i1].y]:=not A[i+v[i1].x,j-v[i1].y];
End;
if i-v[i1].x>=1 then begin
if j+v[i1].y<=m then A[i-v[i1].x,j+v[i1].y]:=not A[i-v[i1].x,j+v[i1].y];
if j-v[i1].y>=1 then A[i-v[i1].x,j-v[i1].y]:=not A[i-v[i1].x,j-v[i1].y];
End;
If (i-v[i1].x<1) and (i+v[i1].x>n) then break;
End;
For I1:=1 to n do
A[I1,j]:=not A[I1,j];
For I1:=1 to m do
A[i,i1]:=not A[i,i1];
A[i,j]:=not A[i,j];
End;
End;
End;
For i:=1 to n do begin
For j:=1 to m do
If A[i,j] then write('W') else write('B');
Writeln;
End;
End.
1125. Классики
Ограничение времени: 0.25 секунды
Ограничение памяти: 16 МБ
Ограничение памяти: 16 МБ
На прогулке в детском саду Никифор играет в классики. Поле для игры представляет собой прямоугольник размеромM на N метров, разбитый на клетки размером 1 на 1 метр. Никифор прыгает из клетки в клетку (не обязательно в соседнюю). При этом каждая клетка окрашена в черный или в белый цвет. Каждый раз, когда Никифор попадает на клетку во всех клетках, центры которых удалены от центра клетки с Никифором на целое число метров, цвет меняется на противоположный. Известно, сколько раз Никифор побывал на каждой из клеток, а также цвета всех клеток в конце игры. Требуется восстановить начальную раскраску клеток поля.
Исходные данные
В первой строке находятся целые неотрицательные числа M и N, не превосходящие 50. В последующих M строках находится символьная таблица размеров M на N, описывающая конечную раскраску клеток поля. Символ W означает, что соответствующая клетка белая, а символ B — что чёрная. Других символов эта таблица не содержит. Затем в последующих M строках находится матрица размером M на N из целых неотрицательных чисел, показывающих, сколько раз Никифор побывал на каждой из клеток. Числа в этих строках не превосходят 2∙109 и отделяются друг от друга пробелом.
Результат
Выведите M строк, в которых находится символьная таблица, описывающая начальную раскраску поля по тем же правилам, по которым описывается конечное состояние поля.
Пример
исходные данные | результат |
---|---|
6 6 BWBBWW BWBBWB BBWWBW BBBBBW BBWWWW BBWBBW 2 0 12 46 2 0 3 0 0 0 0 200 4 2 1 1 4 2 4 2 1 1 4 4 0 0 0 0 0 0 2 56 24 4 2 2 | WWBBWW WBWWBW WBBBBW WBWWBW WBWWBW WBWWBW |
Автор задачи: Дмитрий Филимоненков
Источник задачи: VI Ural State University Collegiate Programming Contest (21.10.2001)
Источник задачи: VI Ural State University Collegiate Programming Contest (21.10.2001)