Cod sursa(job #149486)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 5 martie 2008 19:35:47
Problema Piese Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#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;
	}

}