Cod sursa(job #257238)

Utilizator dexter_dexMutascu Adrian - Dragos dexter_dex Data 12 februarie 2009 22:41:07
Problema Tablete Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include<stdio.h>

long n,k,i,j,x=0,ok;
int v[1000000];
long mat[1000][1000];

void init ()

{for (i=1;i<=n*n;i++)
   v[i]=1;
}

int main()
{


FILE*f=fopen("tablete.in","r");
FILE*g=fopen("tablete.out","w");


fscanf(f,"%ld %ld",&n,&k);


if (k%2==0){ if (n%2==0) for (i=1;i<=n*n;i++)
			{
			 fprintf(g,"%ld ",i);
			 if (i%n==0) fprintf(g,"\n");
			 }


	      else {
		   for (i=1;i<=n;i++)
		       for (j=1;j<=k;j++) {++x;
					   mat[i][j]=x;}


		   for (i=1;i<=n;i++)
		       for (j=k+1;j<=n;j++) {++x;
					     mat[i][j]=x;}

		   for (i=1;i<=n;i++)
		       {
			for (j=1;j<=n;j++) fprintf(g,"%d ",mat[i][j]);

			fprintf(g,"\n");
		       }

		   }

            }






if (k%2==1)

    {
     for (i=1;i<=n;i++)

	for(j=1;j<=k;j++)
	    {++x;
	     if (v[x]!=0) while (v[x]!=0) x++;
	     if (v[x]==0)    {
			      if (i%2==1&&j%k==0) {mat[i][j]=x+1;
						   v[x+1]=1;
						   x--;}
				 else {mat[i][j]=x;
				       v[x]=1;}
			      if (i%2==1&&j%k==0&&i==n) x+=2; 
			     }

	    }


     for (i=1;i<=n;i++)

	 for (j=k+1;j<=n;j++)

	     {++x;
	      mat[i][j]=x;}



     for (i=1;i<=n;i++)
	 {for (j=1;j<=n;j++) fprintf(g,"%ld ",mat[i][j]);
	  fprintf(g,"\n");}



    }



fclose(f);
fclose(g);
return 0;
}