Cod sursa(job #284926)

Utilizator EstiarteManuel Esanu Estiarte Data 22 martie 2009 07:36:53
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.61 kb
#include<stdio.h>
FILE *in=fopen("tablete.in","rt");
FILE *out=fopen("tablete.out","wt");
long int nr,a[1001][1001],last;
int n,k;
void afisare()
{
  int i,j;
  for(i=1;i<=n;i++)
  {
    for(j=1;j<=n;j++)
    {
      fprintf(out,"%ld ",a[i][j]);
      nr++;
    }
    fprintf(out,"\n");
  }
}
int main()
{


  int i,j;
  fscanf(in,"%d",&n);
  fscanf(in,"%d",&k);
  nr=1;
  if(n%2==0 && k%2==0)
  {
    for(i=1;i<=n;i++)

      for(j=1;j<=n;j++)
      {
        a[i][j]=nr;
        nr++;
      }

  }
  else
  if(n%2==0 && k%2==1)
  {
    nr=2;
    for(i=1;i<=n-1;i++)
      for(j=1;j<=n;j++)
      {
        a[i][j]=nr;
        nr++;
      }
      a[n-1][n]=n*n;
      a[n][1]=1;
      nr--;
      for(j=2;j<=n;j++) a[n][j]=nr++;
  }
  else
  if(n%2==1 && k%2==0)
  {
    nr=2;last=1;
    for(i=1;i<=n;i++)
    {
      if(i%2==1)
      {
        a[i][1]=last;
        for(j=2;j<=n;j++)
        {
          a[i][j]=nr;
          nr++;
        }
      }
      else
      {
          last=nr;
	  nr=nr+1;
          for(j=1;j<=n;j++)
          {
            a[i][j]=nr;
            nr++;
          }
      }
    }
  }
  else
  if(n%2==1 && k%2==1)
  {
    nr=1;
    for(i=1;i<=n-1;i++)
      if(i%2==1)
        for(j=1;j<=n;j++)
        {
         if(j==k)
         {
           last=nr;nr++;
         }
         a[i][j]=nr; nr++;
        }
      else
      {
        a[i][1]=last;
        for(j=2;j<=n;j++)
          a[i][j]=nr++;
      }
    a[n-1][n]=n*n;
    nr--;
    for(j=1;j<=n;j++)
      a[i][j]=nr++;  
  }
  afisare();
  return 0;
}