Pagini recente » Cod sursa (job #1116197) | Cod sursa (job #384291) | Cod sursa (job #639585) | Cod sursa (job #3215397) | Cod sursa (job #93149)
Cod sursa(job #93149)
#include <stdio.h>
const int N_MAX = 1024;
int N, sol[N_MAX];
int main()
{
freopen("dame.in", "r", stdin);
#ifndef _SCREEN_
freopen("dame.out", "w", stdout);
#endif
int rest, i;
scanf("%d\n", &N);
if (N == 1) {
printf("1\n");
return 0;
}
if (N == 2 || N == 3) {
printf("%d\n", N - 1);
return 0;
}
rest = N % 12;
if (rest != 3 && rest != 9) {
for (i = 2; i <= N; i += 2) {
sol[++ sol[0]] = i;
}
} else {
for (i = 4; i <= N; i += 2) {
sol[++ sol[0]] = i;
}
sol[++ sol[0]] = 2;
}
int fin = sol[0] + 1, cinci = 0;
if (rest != 8) {
for (i = 1; i <= N; i += 2) {
sol[++ sol[0]] = i;
if (i == 5) cinci = sol[0];
}
} else {
for (i = 1; i <= N; i += 4) {
sol[++ sol[0]] = i + 2;
if (i + 2 == 5) cinci = sol[0];
sol[++ sol[0]] = i;
if (i == 5) cinci = sol[0];
}
}
int aux;
if (rest == 2) {
aux = sol[fin];
sol[fin] = sol[fin + 1];
sol[fin + 1] = aux;
sol[++ sol[0]] = 5;
for (i = cinci; i <= sol[0]; i ++) {
sol[i] = sol[i + 1];
}
sol[0] --;
}
if (rest == 3 || rest == 9) {
sol[++ sol[0]] = sol[fin];
sol[++ sol[0]] = sol[fin + 1];
for (i = fin; i <= sol[0]; i ++) {
sol[i] = sol[i + 2];
}
}
printf("%d\n", sol[0]);
for (i = 1; i <= sol[0]; i ++) {
printf("%d %d\n", i, sol[i]);
}
return 0;
}