Cod sursa(job #2915355)

Utilizator euyoTukanul euyo Data 22 iulie 2022 15:15:05
Problema Tablete Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin( "tablete.in" );
FILE *fout = fopen( "tablete.out", "w" );

const int DIM = 1005; 

int T[DIM][DIM];

void giveNum( int n ) {  
  int m = n, p = 10;
 
  while ( m > 9 ) {
	p *= 10;
	m /= 10;
  }
  p /= 10;
  while ( p > 0 ) {
	fputc( n / p + '0', fout );
	n %= p;
	p /= 10;
  }
  fputc( ' ', fout );
}

int main() {
  int n, k;

  fin >> n >> k;
  if ( k & 1 ) {
    int nr = 0;
	for ( int i = 0; i < n/2; ++i ) {
	  for ( int j = 0; j < k - 1; ++j ) {
		T[2 * i][j] = ++nr;
	  }
	  T[2 * i + 1][0] = ++nr;
	  T[2 * i][k - 1] = ++nr;
	  for ( int j = 1; j < k; ++j ) {
        T[2 * i + 1][j] = ++nr;
	  }
	}
    if ( n & 1 ) {
	  for ( int j = 0; j < k - 1; ++j ) {
		T[n - 1][j] = ++nr;
	  }
	  T[0][k] = ++nr;
	  T[n - 1][k - 1] = ++nr;
	}
	for ( int i = 0; i < n; ++i ) {
	  for ( int j = k; j < n; ++j ) {
		if ( T[i][j] == 0 ) T[i][j] = ++nr; 
	  }
	}
	for ( int i = 0; i < n; ++i ) {
      for ( int j = 0; j < n; ++j ) {
		giveNum( T[i][j] );
	  }
	  fputc( '\n', fout );
	}
  } else {
	for ( int i = 0; i < n; ++i ) {
	  for ( int j = 0; j < n; ++j ) {
		giveNum( i * n + j + 1 );
	  }
	  fputc( '\n', fout );
	}
  }
  fin.close();
  fclose( fout );
  return 0;
}