Cod sursa(job #266417)

Utilizator bardaliviubarda liviu alexandru bardaliviu Data 25 februarie 2009 14:18:42
Problema Tablete Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <stdio.h>
int main ()
{int n,i,j,k,a[100][100],x;
FILE *f,*g;
f=fopen("tablete.in","r");
g=fopen("tablete.out","w");
fscanf(f,"%d%d",&n,&k);
if(k%2==0)
{
 x=1;
 for(i=1;i<=n;i++)
  for(j=1;j<=k;j++)
    a[i][j]=x++;
 for(i=1;i<=n;i++)
  for(j=k+1;j<=n;j++)
   a[i][j]=x++;                
}
else
 if(k%2==1&&n%2==0)
 {
  x=1;
  for(i=1;i<=n;i=i+2)
   {for(j=1;j<=k-1;j++)
     a[i][j]=x++;
    a[i][k]=x+1;
    a[i+1][1]=x;
    x=x+2;
    for(j=2;j<=k;j++)
      a[i+1][j]=x++;
   }
  for(i=1;i<=n;i++)
   for(j=k+1;j<=n;j++)
    a[i][j]=x++;
 }
else
 if(k%2==1 && n%2==1)
 {x=1;
  for(i=1;i<=n;i=i+2)
   {for(j=1;j<=k-1;j++)
     a[i][j]=x++;
    a[i][k]=x+1;
    a[i+1][1]=x;
    x=x+2;
    for(j=2;j<=k;j++)
      a[i+1][j]=x++;
   }
  x=(n-1)*k+1;
  for(j=1;j<=k-1;j++)
   a[n][j]=x++;
  x++;
  a[n][k]=x;
  x--;
 a[1][k+1]=n*k;
 x=n*k+2;
 for(j=k+2;j<=n;j++)
  a[1][j]=x++;
  for(i=2;i<=n;i++)
   for(j=k+1;j<=n;j++)
    a[i][j]=x++;
  }
for(i=1;i<=n;i++)
  { fprintf(g,"\n");
  for (j=1;j<=n;j++)
     fprintf(g,"%d ",a[i][j]);
  }
fclose(f);
fclose(g);
return 0;
}