Cod sursa(job #444362)

Utilizator paul_gabryelPaul Buda paul_gabryel Data 20 aprilie 2010 09:23:16
Problema Tablete Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb

#include<cstdio>
#include<iostream>
#include<fstream>
#include<algorithm>

using namespace std;

#define nn 1001

int a[nn][nn];
int n,k;

int main ()
{
	
	ifstream fin ("tablete.in");
	
	fin>>n>>k;
	fin.close();
	for(int i=1;i<=n;++i)
	for(int j=1;j<=n;++j)
	a[i][j]=((n*(i-1))+j);
		for(int i=1;i<=n;++i){
		for(int j=1;j<=n;++j)
		printf("%d ",a[i][j]);
		printf("\n");}

	if(n%2==0){
		for(int i=n-1;i>1;--i){
			if(a[k][i]%2==1){
				int gasit=0;
				for(int j=i-1;j>=1&&gasit==0;--j)
					if(a[k+1][j]%2==0){
						gasit=a[k][i];
						a[k][i]=a[k+1][j];
						a[k+1][j]=gasit;
						
						}
				}
				
			}
		int aux=a[k][1];
		a[k][1]=a[k-1][n];
		a[k-1][n]=aux;
		}
	else{
		for(int i=n;i>2;--i){
			if(a[i][k]%2==1){
				int gasit=0;
				for(int j=i-1;j>=1&&gasit==0;--j)
					if(a[j][k+1]%2==0){
						gasit=a[i][k];
						a[i][k]=a[j][k+1];
						a[j][k+1]=gasit;
						}
				}
			}
		if(k%2==0){
			int aux=a[2][k];
			a[2][k]=a[n-1][k-1];
			a[n-1][k-1]=aux;
			}
		else{
			int aux=a[1][k];
			a[1][k]=a[n][k-1];
			a[n][k-1]=aux;
			}
		
		
		}
		freopen("tablete.out","w",stdout);
	for(int i=1;i<=n;++i){
		for(int j=1;j<=n;++j)
		printf("%d ",a[j][i]);
		printf("\n");}
	
	
	return 0;}