Cod sursa(job #257416)

Utilizator dexter_dexMutascu Adrian - Dragos dexter_dex Data 13 februarie 2009 11:25:55
Problema Tablete Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include<stdio.h>

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


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) {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;
}