Cod sursa(job #468928)

Utilizator mihai995mihai995 mihai995 Data 5 iulie 2010 14:22:30
Problema Tablete Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
using namespace std;

int sol[1<<10][1<<10],n;

ifstream in("tablete.in");
ofstream out("tablete.out");

void print()
{
	for (int i=1;i<=n;i++)
	{
		for (int j=1;j<=n;j++)
			out<<sol[i][j]<<" ";
		out<<"\n";
	}
}

int main()
{
	int k,x=0,i,j;
	in>>n>>k;
	if (k%2==0)
	{
		for (i=1;i<=n;i++)
			for (j=1;j<=k;j++,x++)
				sol[i][j]=x;
		for (i=1;i<=n;i++)
			for (j=k+1;j<=n;j++,x++)
				sol[i][j]=x;
		print();
		return 0;
	}
	if (n%2==0)
	{
		for (i=1;i<=n;i++)
			sol[i][1]=i;
		x=n+1;
		for (i=1;i<=n;i++)
			for (j=2;j<=k;j++,x++)
				sol[i][j]=x;
		for (i=1;i<=n;i++)
			for (j=k+1;j<=n;j++)
				sol[i][j]=x;
		print();
		return 0;
	}		
	for (i=1;i<k;i++)
		for (j=1;j<=n;j++,x++)
			sol[j][i]=x;
	sol[k-1][n]++;
	x=(k-1)*n;
	sol[1][k]=x;
	sol[1][k+1]=x+2*n;
	x+=2;
	for (i=2;i<=n;i++,x+=2)
	{
		sol[i][k]=x;
		sol[i][k+1]=x+1;
	}
	x++;
	for (i=1;i<=n;i++)
		for (j=k+1;j<=n;j++,x++)
			sol[i][j]=x;
	print();
	return 0;
}