Cod sursa(job #257427)

Utilizator dexter_dexMutascu Adrian - Dragos dexter_dex Data 13 februarie 2009 11:50:07
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 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)
		     {if(j==k) {mat[i][j]=x+1;
			   v[x+1]=1;
			   x--;}

		      else {mat[i][j]=x;
		       v[x]=1;}
		     }
		    else  {if (v[x]==0) {mat[i][j]=x;
					 v[x]=1;}
			  }
		 }

	}


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

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

	 {++x;
	  if (v[x]==0)
	    mat[i][j]=x;
	   else j--;
	  }



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