Cod sursa(job #597725)

Utilizator Smaug-Andrei C. Smaug- Data 23 iunie 2011 01:47:47
Problema Tablete Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <cstdio>

#define MAXN 1005

int main(){

  freopen("tablete.in", "r", stdin);
  freopen("tablete.out", "w", stdout);

  int N, K, i, a, j, k;
  static int S[MAXN][MAXN];

  scanf("%d%d", &N, &K);
  
  a=0;
  if(K%2 == 0){
    for(i=1; i<=N; i++)
      for(j=1; j<=K; j++)
	S[i][j]=++a;
    for(i=1; i<=N; i++)
      for(j=K+1; j<=N; j++)
	S[i][j]=++a;
  }
  else if(K%2 && N%2 == 0){
    for(j=1; j<K-1; j++)
      for(i=1; i<=N; i++)
	S[i][j]=++a;
    for(i=1; i<=N; i++)
      for(j=K-1; j<=K; j++)
	S[i][j]=++a;
    for(i=1; i<=N; i++)
      for(j=K+1; j<=N; j++)
	S[i][j]=++a;
  } 
  else {
    for(j=1; j<K-1; j++)
      for(i=1; i<N; i++)
	S[i][j]=++a;
    for(i=1; i<N; i++)
      for(j=K-1; j<=K; j++)
	S[i][j]=++a;
    for(i=1; i<N; i++)
      for(j=K+1; j<N-1; j++)
	S[i][j]=++a;
    k=a+1; a++;
    for(i=1; i<=N; i++)
      S[N][i]=++a;
    S[1][N]=k;
    S[1][N-1]=++a;
    for(i=2; i<N; i++)
      for(j=N-1; j<=N; j++)
	S[i][j]=++a;
  }

  for(i=1; i<=N; i++){
    for(j=1; j<=N; j++)
      printf("%d ", S[i][j]);
    printf("\n");
  }

  return 0;

}