Pagini recente » Istoria paginii runda/foxter | Cod sursa (job #2207746) | Istoria paginii runda/lasm1 | Cod sursa (job #2842674) | Cod sursa (job #203114)
Cod sursa(job #203114)
#include <stdio.h>
#define NMAX 510
#define FIN "dame.in"
#define FOUT "dame.out"
int n,i,j,poz,pozz,aux;
int impar[NMAX],par[NMAX];
int main()
{
freopen(FIN,"rt",stdin);
freopen(FOUT,"wt",stdout);
scanf("%d", &n);
if (n==1)
{
printf("1\n");
printf("1 ");
printf("1");
}
else
if (n==2)
{
printf("1\n");
printf("1 ");
printf("1");
}
else
if (n==3)
{
printf("2\n");
printf("1 ");
printf("1\n");
printf("2 ");
printf("3");
}
else
if (n>=4)
{
printf("%d\n", n);
for (i=1;i<=n;i++)
if (i%2==0)
par[i/2]=i;
else
impar[i/2+1]=i;
if (n%12==3 || n%12==9)
{
for (i=1;i<=n/2-1;i++)
par[i]=par[i+1];
par[n/2]=2;
}
if (n%12==8)
for (i=1;i<=n/2;i+=2)
{
aux=impar[i];
impar[i]=impar[i+1];
impar[i+1]=aux;
}
if (n%12==2)
{
for (i=1;i<=n/2;i++)
if (impar[i]==5)
poz=i;
for (i=1;i<=n/2;i++)
//else
/*if (impar[i]==1)
{
for (j=1;j<=n/2;j++)
if (impar[j]==3)
{
aux=impar[i];
impar[i]=impar[j];
impar[j]=aux;
break;
}
} */
if (impar[1]==1 && impar[2]==3)
{
impar[1]=3;
impar[2]=1;
}
else
if (impar[1]==3 && impar[2]==1)
{
impar[1]=1;
impar[2]=3;
}
if (n%2==0)
{
for (i=3;i<=n/2-1;i++)
impar[i]=impar[i+1];
impar[n/2]=5;
}
else
{
for (i=3;i<=n/2;i++)
impar[i]=impar[i+1];
impar[n/2+1]=5;
}
}
else
if (n%12==3 || n%12==9)
{
for (i=1;i<=n/2;i++)
if (impar[i]==3)
poz=i;
for (i=1;i<=n/2;i++)
if (impar[i]==1 )
pozz=i;
/*aux=impar[poz];
impar[poz]=impar[n/2];
impar[n/2]=aux;
aux=impar[pozz];
impar[pozz]=impar[n/2-1];
impar[n/2-1]=aux; */
if (n%2==1)
{
for (i=1;i<=n/2-1;i++)
impar[i]=impar[i+2];
impar[n/2+1]=3;
impar[n/2]=1;
}
else
{
for (i=1;i<=n/2-1;i++)
impar[i]=impar[i+2];
impar[n/2]=3;
impar[n/2-1]=1;
}
}
}
if (n>=4)
{
for (i=1;i<=n/2;i++)
printf("%d %d\n",i,par[i]);
for (i=n/2+1;i<=n;i++)
printf("%d %d\n",i,impar[i-n/2]);
}
return 0;
}