Đề bài: http://vn.spoj.com/problems/VMDAOBIT/
Thuật toán:
- (đang cập nhập)
Code:
const fi='';
fo='';
maxn=100;
type point=record
x,y:integer;
end;
var m,n,i,j,dem:longint;
a,b:array[1..maxn,1..maxn] of byte;
res:array[1..maxn*maxn] of point;
kiemtra:boolean;
procedure update(x,y:integer);
var i,j:integer;
begin
for i:=x to x+2 do
for j:=y to y+2 do
if b[i,j]=1 then b[i,j]:=0 else b[i,j]:=1;
end;
procedure xaydung;
var i,j:integer;
begin
for i:=1 to m do
begin
for j:=1 to n-2 do
begin
if b[i,j]=1 then
begin
inc(dem);
res[dem].x:=i;
res[dem].y:=j;
update(i,j);
end;
end;
for j:=n-1 to n do
if b[i,j]=1 then begin kiemtra:=false; exit; end;
end;
end;
procedure init;
begin
b:=a;
dem:=0;
kiemtra:=true;
end;
begin
assign(input,fi);reset(input);
assigN(output,fo);rewrite(output);
readln(m,n);
for i:=1 to m do
for j:=1 to n do read(a[i,j]);
init;
xaydung;
if kiemtra then
begin
writeln(dem);
for i:=1 to dem do writeln(res[i].x,' ',res[i].y);
end else write(-1);
close(input);close(output);
end.
Speak Your Mind