Cod sursa(job #398632)

Utilizator nicolaetitus12Nicolae Titus nicolaetitus12 Data 19 februarie 2010 08:04:45
Problema Tablete Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.44 kb
#include <stdlib.h>
#include <stdio.h>
#define N 1001
int a[N][N];
int main ()
{int i,j,n,k,p,o=0;
 int count=1;
 freopen("tablete.in","r",stdin);
 freopen("tablete.out","w",stdout);
 
 scanf("%d %d",&n,&k);
 if(n%2==0)
 {if(k%2==0)
  {for (i=0;i<n;i++)
   {for (j=1;j<=n;j++)
    {printf("%d ",o+j);
    }
    o+=n;
    printf("\n");
   }
  }
  else
  {for (i=n/2;i<n;i++)
   {
    for(j=1;j<k;j++)
     printf("%d ",o+j);
    for (j=k;j<n;j++)
     printf("%d ",o+j+1);

     printf("%d\n%d ",o+n+k,o+k);
     o+=n;
    for (j=1;j<k;j++)
     printf("%d ",o+j);
    for (j=k+1;j<=n;j++)
     printf("%d ",o+j);
     o+=n;
     printf("\n");
   }
  }
 }
 else//n impar
 {if(k%2==0)
  {for (i=n/2+1;i<n;i++)
   {for (j=1;j<n;j++)
    {printf("%d ",o+j);
    }
    printf("%d\n",o+n+k);
    o+=n;
    for (j=1;j<=k;j++)
    {printf("%d ",o-1+j);
    }
    for (j=k+1;j<=n;j++)
    {printf("%d ",o+j);
    }
    printf("\n");
    o+=n;
   }

   for (i=1;i<=n;i++)
   {printf("%d ",o+i);
   }
  }
  else
  {for (i=n/2;i>0;i--)
   {for  (j=1;j<k;j++)
     printf("%d ",o+j);
    for (j=k;j<=n;j++)
     printf("%d ",o+j+1);

    printf("\n%d ",o+k);
    o+=n;
    for (j=1;j<=k;j++)
     printf("%d ",o+j+1);

    if(i!=1)
    {printf("%d\n",o+n);
    }
    else
    {printf("%d\n",o+n+k);
    }
    o+=n;
   }
   
   for (i=0;i<n;i++)
   {printf("%d ",o+i);
   }
  }
 }
 return 0;
}