Cod sursa(job #825497)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 29 noiembrie 2012 09:36:38
Problema Tablete Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <fstream>
using namespace std;
ifstream f("tablete.in");
ofstream g("tablete.out");
int n, k, i, j, v[1010][1010], nr;
int main(){
	f>>n>>k;
	f.close();
	if(k%2==0)
	{
		nr=1;
		for(i=1; i<=n; i++)
		{
			for(j=1; j<=n; j++)
			{
				g<<nr<<' ';
				nr++;
			}
			g<<"\n";
		}
		g.close();
		return 0;
	}
	if(n%2==0)
	{
		v[2][1]=1;
		nr=2;
		for(j=1; j<=k; j++)
		{
			v[1][j]=nr;
			nr++;
		}
		for(j=2; j<=n; j++)
		{
			v[2][j]=nr;
			nr++;
		}
		for(j=k+1; j<=n; j++)
		{
			v[1][j]=nr;
			nr++;
		}
		nr=2*n;
		for(i=3; i<=n; i++)
		{
			for(j=1; j<=n; j++)
				v[i][j]=v[i-2][j]+nr;
		}
		for(i=1; i<=n; i++)
		{
			for(j=1; j<=n; j++)
				g<<v[i][j]<<' ';
			g<<"\n";
		}
		g.close();
		return 0;
	}
	v[2][1]=1;
	nr=2;
	for(j=1; j<=k; j++)
	{
		v[1][j]=nr;
		nr++;
	}
	for(j=2; j<=n; j++)
	{
		v[2][j]=nr;
		nr++;
	}
	for(j=k+1; j<=n; j++)
	{
		v[1][j]=nr;
		nr++;
	}
	nr=2*n;
	for(i=3; i<n; i++)
	{
		for(j=1; j<=n; j++)
			v[i][j]=v[i-2][j]+nr;
	}
	nr=(n-1)*n+1;
	v[n][1]=v[n-1][n];
	v[n-1][n]=nr;
	nr++;
	j=k+1;
	for(i=2; i<=k; i++)
	{
		v[n][i]=v[n-2][j];
		v[n-2][j]=nr;
		nr++;
		j++;
	}
	for(i=k+1; i<=n; i++)
	{
		v[n][i]=nr;
		nr++;
	}
	for(i=1; i<=n; i++)
	{
		for(j=1; j<=n; j++)
			g<<v[i][j]<<' ';
		g<<"\n";
	}
	g.close();
	return 0;
}