Pagini recente » Cod sursa (job #2177673) | Cod sursa (job #1135333) | Cod sursa (job #1838867) | Cod sursa (job #257548) | Cod sursa (job #1496745)
#include <cstdio>
#define MAXN 500
int e, a[MAXN+1][MAXN+1], v[9];
inline void solve(int x, int y, int l, int c){
int i, j;
for(i=x; i<l; i++){
for(j=y; j<c; j++){
a[i][j]=e;
}
}
}
int main(){
int cn, n, m, i, j, k, p, s, d, pas, r, q;
FILE *fin, *fout;
fin=fopen("piese.in", "r");
fout=fopen("piese.out", "w");
fscanf(fin, "%d%d", &n, &m);
cn=n;
j=0;
k=0;
for(pas=1<<8; pas; pas>>=1){
if(n>=pas){
v[k++]=pas;
n-=pas;
}
}
e=0;
while(j<m){
r=v[0];
s=0;
for(i=0; i<k; i++){
d=v[i];
while(m-j<d){
d/=2;
r=d;
}
for(p=0; p<v[i]/d; p++){
for(q=0; q<r; q+=d){
e++;
solve(s, j+q, s+d, j+q+d);
}
s+=d;
}
}
j+=r;
}
fprintf(fout, "%d\n", e);
for(i=0; i<cn; i++){
for(j=0; j<m-1; j++){
fprintf(fout, "%d ", a[i][j]);
}
fprintf(fout, "%d\n", a[i][m-1]);
}
fclose(fin);
fclose(fout);
return 0;
}