Pagini recente » Cod sursa (job #1805364) | Cod sursa (job #2038762) | Cod sursa (job #2785214) | Cod sursa (job #2188880) | Cod sursa (job #2486857)
#include <bits/stdc++.h>
#define inf 2000000000
#define dim 515
using namespace std;
ifstream fin("piese.in");
ofstream fout("piese.out");
int nr,n,m;
int s[dim][dim],i,j;
void increment(int ls,int cs,int lj,int cj){
int j;
nr++;
for(;ls<=lj;ls++){
for(j=cs;j<=cj;j++)
s[ls][j]=nr;
}
}
void solve(int ls,int cs,int lj,int cj){
if(ls>lj||cs>cj){
return;
}
///linie sus coloana sus linie jos coloana jos
int p=1;
while(p<=min(lj-ls+1,cj-cs+1)){
p*=2;
}
p>>=1;
increment(ls,cs,ls+p-1,cs+p-1);
solve(ls,cs+p,ls+p-1,cj);
solve(ls+p,cs,lj,cs+p-1);
solve(ls+p,cs+p,lj,cj);
}
int main(){
fin>>n>>m;
solve(1,1,n,m);
fout<<nr<<"\n";
for(i=1;i<=n;i++,fout<<"\n")
for(j=1;j<=m;j++){
fout<<s[i][j]<<" ";
}
}