Cod sursa(job #187463)

Utilizator Astrid28Ruxandra Cohal Astrid28 Data 4 mai 2008 11:45:46
Problema Dame Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<fstream.h>

struct nod
				{
					int c,l;
				};
nod a[1001];
int n;
ofstream fout("dame.out");

void citire()
{
	ifstream fin("dame.in");
	fin>>n;
	fin.close();
}



void afisare()
{
	int i;
	fout<<n<<'\n';
	for(i=1;i<=n;i++)
		fout<<a[i].l<<' '<<a[i].c<<'\n';
}



void dame()
{
	int i,k=n/2+n%2,aux;
	for(i=1;i<=k;i++)
		a[i].c=i*2, a[i].l=i;

	if(n%12==3 || n%12==9)
		{
			a[1].l=k;
			for(i=2;i<k;i++)
				a[i].l=i;
		}

	for(i=k+1,aux=1;i<=n;i++,aux=aux+2)
		a[i].c=aux, a[i].l=i;

	if(n%12==8)
		for(i=k+1;i<=n;i=i+2)
			{
				aux=a[i].l;
				a[i].l=a[i+1].l;
				a[i+1].l=aux;
			}
	if(n%12==2)
		{
			aux=a[k+1].l;
			a[k+1].l=a[k+2].l;
			a[k+2].l=aux;
			a[k+3].l=n;
			for(i=k+4;i<=n;i++)
				a[i].l--;
		}
	if(n%12==3 || n%12==9)
		{
			a[k+1].l=n-1;
			a[k+2].l=n;
			for(i=k+3;i<n;i++)
				a[i].l-=2;
		}
	afisare();
}


int main()
{
	citire();
	if(n==2)
		{fout<<'1'<<'\n'; fout<<"1 1\n";}
	 else
		 if(n==3)
			 {fout<<"2\n"; fout<<"1 1\n"; fout<<"2 3\n";}
			else
				dame();
	fout.close();
	return 0;
}