Cod sursa(job #1886015)

Utilizator TincaMateiTinca Matei TincaMatei Data 20 februarie 2017 16:34:04
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <cstdio>

int matr[1000][1000];

int main() {
  int n, k;
  FILE *fin = fopen("tablete.in", "r");
  fscanf(fin, "%d%d", &n, &k);
  fclose(fin);

  int i = 1;
  if(n % 2 == 0 && k % 2 == 0) {
    for(int l = 0; l < n; ++l)
      for(int c = 0; c < n; ++c)
        matr[l][c] = i++;
  }else if(n % 2 == 1 && k % 2 == 0) {
    int first = 1;
    for(i = 0; i < k - 1; ++i)
      for(int j = 0; j < n; ++j)
        matr[j][i] = first++;

    for(int j = 0; j < n; ++j) {
      matr[j][k - 1] = first++;
      matr[j][k] = first++;
    }
    for(int i = k + 1; i < n; i++)
      for(int j = 0; j < n; ++j)
        matr[j][i] = first++;
  } else {
    int first = 1;
    for(int i = 0; i < k - 1; ++i)
      for(int j = 0; j < n; ++j)
        matr[j][i] = first++;

    matr[n - 1][k - 2] = first;
    first--;
    for(i = 0; i < n; ++i) {
      matr[i][k - 1] = first;
      matr[i][k] = first + 3;
      first = first + 2;
    }

    matr[n - 1][k] = first++;
    for(i = k + 1; i < n; ++i)
      for(int j = 0; j < n; ++j)
        matr[j][i] = first++;
  }

  FILE *fout = fopen("tablete.out", "w");
  for(int l = 0; l < n; ++l) {
    for(int c = 0; c < n; ++c)
      fprintf(fout, "%d ", matr[l][c]);
    fprintf(fout, "\n");
  }
  fclose(fout);
  return 0;
}