Cod sursa(job #688744)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 23 februarie 2012 19:58:48
Problema Tablete Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.57 kb
#include<cstdio>
int n,k,i,j,l;
int main()
{FILE *f=fopen("tablete.in","r"),*g=fopen("tablete.out","w");
fscanf(f,"%d%d",&n,&k);
if(k%2==0)
      for(i=1;i<=n;i++)
           {for(j=1;j<=n;j++)
                  fprintf(g,"%d ",(i-1)*n+j);
           fprintf(g,"\n");}
if(k%2&&n%2==0)
      for(i=1,l=n*k;i<=n;i++,l+=n-k)
      if(i%2)
           {for(j=1;j<k;j++)
                  fprintf(g,"%d ",(i-1)*k+j);
           fprintf(g,"%d ",i*k+1);
           for(j=k+1;j<=n;j++)
                  fprintf(g,"%d ",l+j-k);
           fprintf(g,"\n");}
      else
           {fprintf(g,"%d ",k*(i-1));
           for(j=2;j<=k;j++)
                  fprintf(g,"%d ",k*(i-1)+j);
           for(j=k+1;j<=n;j++)
                  fprintf(g,"%d ",l+j-k);
           fprintf(g,"\n");}
if(k%2&&n%2)
      {for(i=1,l=n*k;i<n;i++,l+=n-k)
      if(i%2)
           {for(j=1;j<k;j++)
                  fprintf(g,"%d ",(i-1)*k+j);
           fprintf(g,"%d ",i*k+1);
           for(j=k+1;j<=n;j++)
           if(i==1&&j==k+1)
                  fprintf(g,"%d ",l+j-k-1);
           else
                  fprintf(g,"%d ",l+j-k);
           fprintf(g,"\n");}
      else
           {fprintf(g,"%d ",k*(i-1));
           for(j=2;j<=k;j++)
                  fprintf(g,"%d ",k*(i-1)+j);
           for(j=k+1;j<=n;j++)
                  fprintf(g,"%d ",l+j-k);
           fprintf(g,"\n");}
      for(i=1;i<k;i++)
           fprintf(g,"%d ",(n-1)*k+i);
      fprintf(g,"%d ",n*k+1);
      for(i=k+1;i<=n;i++)
           fprintf(g,"%d ",l+i-k);
      fprintf(g,"\n");} 
return 0;}