Pagini recente » Cod sursa (job #3176058) | Cod sursa (job #1826628) | Solutii preONI 2007, Runda Finala | Cod sursa (job #1922615) | Cod sursa (job #149486)
Cod sursa(job #149486)
#include<stdio.h>
long int n,m,cont,p1,p2,x[501][501],i,j,k,nn,mm,ii,jj,colti,coltj;
void umplelin();
void umplecol();
int main()
{ FILE *f=fopen("piese.in","r"),
*g=fopen("piese.out","w");
fscanf(f,"%ld%ld",&n,&m);
nn=n; mm=m;p1=1;p2=2;
while(m&&n)
{ if(n%p2==p1) {umplelin(); n-=p1;}
if(m%p2==p1){ umplecol(); m-=p1;}
p1*=2; p2*=2;
}
fprintf(g,"%ld\n",cont);
for(i=1;i<=nn;i++){
for(j=1;j<=mm;j++) fprintf(g,"%ld ",x[i][j]);
fprintf(g,"\n");
}
fcloseall();
return 0;
}
void umplelin()
{ k=m/p1;
for(j=0;j<k;j++)
{ cont++; colti=n-p1; coltj=j*p1;
for(ii=1;ii<=p1;ii++)
for(jj=1;jj<=p1;jj++) x[colti+ii][coltj+jj]=cont;
}
}
void umplecol()
{ k=n/p1;
for(j=0;j<k;j++)
{ cont++; coltj=m-p1; colti=j*p1;
for(ii=1;ii<=p1;ii++)
for(jj=1;jj<=p1;jj++) x[colti+ii][coltj+jj]=cont;
}
}