Cod sursa(job #124880)

Utilizator vanila_CPPIonescu Victor Cristian vanila_CPP Data 20 ianuarie 2008 09:43:01
Problema Piese Scor 100
Compilator fpc Status done
Runda preONI 2008, Runda 3, Clasa a 9-a Marime 1.51 kb
program piese;
var f,g:text;
        m,n,nrc:longint;
        pattern:array[1..501,1..501] of longint;



procedure iofile;
begin
        assign(f,'piese.in');reset(f);
        assign(g,'piese.out');rewrite(g);
        readln(f,m,n);
        close(f);
end;


function fits(lat,dx,dy:longint):boolean;
begin
        if (lat<=dx)and(lat<=dy) then fits:=true else
        fits:=false;
end;


procedure pune_piesa(x,y:longint);
var lat:longint;
    i,j,dx,dy:longint;
begin
        lat:=1;
        dx:=m-x+1;
        dy:=n-y+1;
        while fits(lat,dx,dy) do
                begin
                        lat:=lat*2;
                end;
        lat:=lat div 2;
        for i:= x to x+lat-1 do
                for j:=y to y+lat-1 do
                        pattern[i,j]:=nrc;
end;



procedure solve;
var i,j:longint;
begin
        fillchar(pattern,sizeof(pattern),0);
        nrc:=0;
        for i:=1 to m do
                for j:=1 to n do
                        if pattern[i,j]=0 then
                                begin
                                        inc(nrc);
                                        pune_piesa(i,j);
                                end;
        writeln(g,nrc);
        for i:=1 to m do
                begin
                        for j:=1 to n-1 do
                                write(g,pattern[i,j],' ');
                        writeln(g,pattern[i,n]);
                end;
        close(g);
end;


begin
        iofile;
        solve;
end.