Cod sursa(job #444364)

Utilizator paul_gabryelPaul Buda paul_gabryel Data 20 aprilie 2010 09:30:50
Problema Tablete Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 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[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;
						}
				}
			}
		if(k%2==0){
			int aux=a[k][2];
			a[k][2]=a[k-1][n-1];
			a[k-1][n-1]=aux;
			}
		else{
			int aux=a[k][1];
			a[k][1]=a[k-1][n];
			a[k-1][n]=aux;
			}
		sort(a[k]+1 , a[k]+n+1);
		sort(a[k+1]+1 , a[k+1]+n+1);
		}
		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;}