Cod sursa(job #1225235)

Utilizator mihaimusatMihai Musat mihaimusat Data 1 septembrie 2014 21:15:31
Problema Dame Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <cstdio>

using namespace std;

int n,col[1005],r;

void change(int poz1,int poz2)
{
	int t;
	t=col[poz1];
	col[poz1]=col[poz2];
	col[poz2]=t;
}
void moveit(int poz)
{
	col[++r]=col[poz];
	int i;
	for (i=poz+1; i<=r; i++)
		col[i-1]=col[i];
	r--;
}
void solve()
{
	int i;
	for (i=2; i<=n; i+=2)
		col[++r]=i;
	if (n%12==3 || n%12==9)
		moveit(1);
	for (i=1; i<=n; i+=2)
		col[++r]=i;
	if (n%12==8)
		for (i=r/2+1; i<=r; i+=2)
			change(i,i+1);
	if (n%12==2)
	{
		change(r/2+1,r/2+2);
		moveit(r/2+3);
	}
	if (n%12==3 || n%12==9)
	{
		moveit(r/2+1);
		moveit(r/2+1);
	}
}
void print()
{
	int i,sol;
	if (n==2 || n==3)
	{
		sol=n-1;
		printf("%d\n",n-1);
	}
	else
	{
		sol=n;
		printf("%d\n",n);
	}
	if (n==3)
		printf("1 2\n3 1\n");
	else
		for (i=1; i<=sol; i++)
			printf("%d %d\n",i,col[i]);
}
int main()
{
	freopen("dame.in","r",stdin);
	freopen("dame.out","w",stdout);
	scanf("%d",&n);
	solve();
	print();
	return 0;
}