Cod sursa(job #1238533)

Utilizator alexandra_udristoiuUdristoiu Alexandra Maria alexandra_udristoiu Data 7 octombrie 2014 09:42:26
Problema Tablete Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.69 kb
#include<fstream>
using namespace std;
int n, i, j, nr, aux, k;
int a[1001][1001];
ifstream fin("tablete.in");
ofstream fout("tablete.out");
int main(){
	fin>> n >> k;
	for(i = 1; i <= n; i++){
		for(j = 1; j <= n; j++){
			nr++;
			a[i][j] = nr;
		}
	}
	if(n % 2 == 0){
		if(k % 2 == 1){
			for(i = 1; i <= n / 2; i++){
				aux = a[i*2-1][k];
				for(j = k + 1; j <= n; j++){
					a[i*2-1][j-1] = a[i*2-1][j];
				}
				a[i*2-1][n] = a[i*2][n];
				for(j = n - 1; j >= 1; j--){
					a[i*2][j+1] = a[i*2][j];
				}
				a[i*2][1] = aux;
			}
		}
	}
	else{
		if(k % 2 == 0){
			for(i = 1; i <= n / 2; i++){
				aux = a[i*2][n];
				for(j = n - 1; j >= 1; j--){
					a[i*2][j+1] = a[i*2][j];
				}
				a[i*2][1] = a[i*2-1][n];
				a[i*2-1][n] = aux;
			}
		}
		else{
			if(n % 4 == 3){
				for(i = 1; i <= n - 2; i+= 4){
					aux = a[i][1];
					for(j = 2; j <= n; j++){
						a[i][j-1] = a[i][j];
					}
					a[i][n] = a[i+2][n];
					for(j = n - 1; j >= 1; j--){
						a[i+2][j+1] = a[i+2][j];
					}
				}
			}
			else{
				for(i = 1; i <= n - 4; i+= 4){
					aux = a[i][1];
					for(j = 2; j <= n; j++){
						a[i][j-1] = a[i][j];
					}
					a[i][n] = a[i+2][n];
					for(j = n - 1; j >= 1; j--){
						a[i+2][j+1] = a[i+2][j];
					}
					a[i+2][1] = aux;
					a[i][n] = a[i+2][n];
					for(j = n - 1; j >= 1; j--){
						a[i+2][j+1] = a[i+2][j];
					}
					a[i+2][1] = aux;
				}
				aux = a[n-1][n];
				a[n-1][n] = a[n][n];
				for(j = n - 1; j >= 1; j--){
					a[n][j+1] = a[n][j];
				}
				a[n][1] = aux;
			}

		}
	}
	for(i = 1; i <= n; i++){
		for(j = 1; j <= n; j++){
			fout<< a[i][j] <<" ";
		}
		fout<<"\n";
	}
	return 0;
}