Cod sursa(job #230698)

Utilizator marius135Dumitran Adrian Marius marius135 Data 14 decembrie 2008 10:15:33
Problema Tablete Scor 100
Compilator cpp Status done
Runda Algoritmiada 2009, Runda 1, Clasele 9-10 Marime 1.2 kb
#include<stdio.h>

long n,k;
long a[1024][1024];

void afis1()
{
	for( long i = 1; i <= n * n; ++i)
	{
		if( i%n != 0)
			printf("%ld ",i);
		else printf("%ld\n",i);
	}
	
}
void afis()
{
	for( long i = 1; i <= n; ++i)
	{
		for( long j = 1; j < n; ++j)
			printf("%ld ",a[i][j]);
		printf("%ld\n",a[i][n]);
	}
}
void afis2()
{
	for( long i = 1; i <= n; ++i)
	{
		for( long j = 1; j <= n; ++j)
			a[i][j] = ( j - 1 )	* n + i;
	}
	for( long i = 1; i <= n; ++i)
	{
		a[i][k-1] = a[i][k-1] + i -1;
		a[i][k] = a[i][k-1]+1;
		
	}
	afis();
}
void afis3()
{
	for( long i = 1; i <= n; ++i)
	{
		for( long j = 1; j <= n; ++j)
			a[i][j] = ( j - 1 )	* n + i;
	}
	long aux = a[1][k-1];
	a[1][k-1] = a[n][k-2];
	a[n][k-2] = aux;
	a[1][k] = a[1][k-1] + 3;
	for( long i = 2; i <= n; ++i)
	{
		a[i][k-1] = a[i-1][k-1]+2;
		a[i][k] = a[i-1][k] + 2;
	}
	a[1][k+1]--;
	afis();
}

int main()
{
	freopen("tablete.in","r",stdin);
	freopen("tablete.out","w",stdout);
	
	scanf("%ld %ld",&n,&k);
	
	if( n%2 == 0 && k %2 == 0)
	{
		afis1();
		return 0;
	}
	if( n%2 == 0 )
	{
		afis2();
		return 0;
	}
	if( k%2 == 0)
	{
		afis2();
		return 0;
	}
	afis3();
	
	
	return 0;
}