Cod sursa(job #231492)

Utilizator alex.cepoiAlexandru Cepoi alex.cepoi Data 14 decembrie 2008 12:30:28
Problema Tablete Scor 50
Compilator cpp Status done
Runda Algoritmiada 2009, Runda 1, Clasele 9-10 Marime 0.96 kb
#include <cstdio>

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

void print ()
{
	for (int i=1; i<=n; ++i)
	{
		int j;
		for (j=1; j<n; ++j)
			printf ("%d ", a[i][j]);
		printf ("%d", a[i][j]);
		printf ("\n");
	}
}

void rotate_left (int i, int j)
{
	int temp=a[i][1];
	for (int k=1; k<n; ++k)
		a[i][k]=a[i][k+1];
	a[i][n]=a[j][n];

	for (int k=n; k>0; --k)
		a[j][k]=a[j][k-1];
	a[j][1]=temp;
}

void rotate_right (int i, int j)
{
	int temp=a[j][n];
	for (int k=n; k>0; --k)
		a[j][k]=a[j][k-1];
	a[j][1]=a[i][n];
	a[i][n]=temp;
}


int main ()
{
	freopen ("tablete.in", "r" , stdin);
	freopen ("tablete.out", "w", stdout);

	scanf ("%d%d", &n, &k);
	for (int i=1; i<=n; ++i)
		for (int j=1; j<=n; ++j)
			a[i][j]=(i-1)*n+j;

	if (n%2)
	{
		for (int i=1; i<n; i+=2)
			rotate_right (i,i+1);
	}
	if (a[1][k]%2)
	{
			for (int i=1; i<n; i+=2)
				rotate_left (i,i+1);
			if (n%2)
				rotate_right (n-1, n);
	}

	print ();
	return 0;
}