Cod sursa(job #3205729)

Utilizator euyoTukanul euyo Data 20 februarie 2024 13:16:44
Problema Tablete Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin( "tablete.in" );
ofstream fout( "tablete.out" );

const int DIM = 1e3 + 5;

int t[DIM][DIM];

int main() {
  int n, k, idx = 0;

  fin >> n >> k;  
  if ( n % 2 == 0 ) {
	if ( k & 1 ) {
	  idx = n;
	  for ( int i = 1; i <= n; ++i ) {
        for ( int j = 1; j <= n; ++j ) {
		  if ( j == 1 ) {
			t[i][j] = i;
		    continue;
		  }
		  if ( j == n ) {
			t[i][j] = n * (n - 1) + i;
			continue;
		  }
		  t[i][j] = ++idx;
		}
	  }
	} else {
	  for ( int i = 1; i <= n; ++i ) {
		for ( int j = 1; j <= n; ++j ) {
	      t[i][j] = ++idx; 
		}
	  }
	}
  } else {
	if ( k & 1 ) {
	  for ( int i = 1; i <= n; ++i ) {
		for ( int j = 1; j <= n; ++j ) {
	      t[i][j] = ++idx;
		}
	  }
	  for ( int i = 1; i <= n; i += 2 ) {
		int aux = t[i][n];
		for ( int j = n; j >= 2; --j ) {
		  t[i][j] = t[i][j - 1];
		}
		t[i][1] = t[i - 1][n];
		t[i - 1][n] = aux;
	  }
	  for ( int i = 1; i < n; ++i ) {
		t[1][i] += 2;
	  }
      t[1][n] = t[n][1];
	  t[n][1] = n;
	} else {
	  idx = n;
	  for ( int i = 1; i <= n; ++i ) {
		for ( int j = 1; j <= n; ++j ) {
		  if ( j == 1 ) {
			t[i][j] = i;
			continue;
		  }
		  t[i][j] = ++idx;
		}
	  }
	}
  }

  for ( int i = 1; i <= n; ++i ) {
	for ( int j = 1; j <= n; ++j ) {    
	  fout << t[i][j] << " ";
	}
	fout << "\n";
  }
  fin.close();
  fout.close();
  return 0;
}