Cod sursa(job #1738438)

Utilizator pas.andreiPopovici Andrei-Sorin pas.andrei Data 6 august 2016 18:16:19
Problema Tablete Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
#include <iostream>
#include <vector>
#include <queue>
#define pb push_back
#define NMAX 1005
#define INF 0x3f3f3f3f

using namespace std;

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

int v[NMAX][NMAX], used[NMAX*NMAX];

int main() {
	int n,k,i,j,nr,p;

	fin>>n>>k;

	nr=1;
	for(j=1;j<k-1;++j){
		for(i=1;i<=n;++i ){
			used[nr] = 1;
			v[i][j]=nr++;
		}
	}

	if(nr%2!=0){
 		for(i=1;i<=n;++i){
			for(j=k-1;j<=k;++j){
				while(used[nr]) nr++;

				used[nr] = 1;
				v[i][j]=nr++;
			}
		}
		for(j=k+1;j<=n;++j){
			for(i=1;i<=n;++i){
				while(used[nr])
					nr++;
				used[nr] = 1;
				v[i][j]=nr++;
			}
		}
	} else {
		used[nr] = 1;
		v[1][k-1] = nr;
		j=k;
		p=nr+2;
		for(i=1;i<=n;++i) {
			used[p]=1;
			v[i][k]=p;
			p+=2;
		}

		j=k-1;
		for(i=2;i<=n;++i) {
			while(used[nr])
				nr++;
			v[i][j] = nr;
			used[nr++] = 1;
		}

		for(i=1;i<=n;++i) {
			for(j=k+1;j<=n;++j) {
				while(used[nr]) nr++;

				v[i][j]=nr;
				used[nr++]=1;
			}
		}
	}

	for(i=1;i<=n;++i) {
		for(j=1;j<=n;++j) fout<<v[i][j]<<' ';
		fout<<'\n';
	}

	return 0;
}