Pagini recente » Cod sursa (job #345500) | Cod sursa (job #2388237) | Cod sursa (job #5626) | Cod sursa (job #999473) | Cod sursa (job #483101)
Cod sursa(job #483101)
#include <stdio.h>
#define NMax 1000
const char IN[] ="dame.in";
const char OUT[] ="dame.out";
int N,p;
int a[NMax+10];
void add(int x,int v)
{
int i;
for (i=p-1;i>=x;i--)
a[i+1]=a[i];
a[x]=v;
p++;
}
void Delete(int x)
{
int i;
for (i=x+1;i<p;i++)
a[i]=a[i+1];
p--;
}
void schimb(int &a,int &b)
{
int tmp=a;
a=b;
b=tmp;
}
int main()
{
int i,x;
freopen(IN,"r",stdin);
scanf("%d",&N);
fclose(stdin);
freopen(OUT,"w",stdout);
if (N>1 && N<4)
{
if (N==2)
printf("1\n1 1\n");
else
printf("2\n1 1\n3 2\n");
fclose(stdout);
}
p=0;
for (i=2;i<=N;i+=2)
{
a[p++]=i;
}
if (N%12==3 || N%12==9)
Delete(0),
add(p,2);
x=p;
for (i=1;i<=N;i+=2)
add(p,i);
if (N%12==8)
for (i=x;i<p;i+=2)
schimb(a[i],a[i+1]);
if (N%12==2)
schimb(a[x],a[x+1]),
Delete(a[x+2]),
add(p,5);
if (N%12==3 || N%12==9)
Delete(x),
Delete(x),
add(p,1),
add(p,3);
printf("%d\n",N);
for (i=0;i<N;i++)
printf("%d %d\n",i+1,a[i]);
fclose(stdout);
return 0;
}