Cod sursa(job #236719)

Utilizator alex_mircescuAlex Mircescu alex_mircescu Data 28 decembrie 2008 12:42:42
Problema Dame Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <stdio.h>
#include <math.h>

long i, n, o, p, v[1024];

void mut(long poz, long cat, long cate) {
	for (long i = poz; i <= cate; ++i) {
		v[i - cat] = v[i];
	}
}

int main() {
	freopen("dame.in", "r", stdin);
	freopen("dame.out", "w", stdout);
	scanf("%ld", &n);
	if (n == 2) {
		printf("1\n1 1");
		return 0;
	}
	if (n == 3) {
		printf("2\n1 1\n2 3");
		return 0;
	}
	for (i = 1; i <= n; ++i) {
		if (i % 2 == 0) {
			v[++o] = i;
			++p;
		}
	}
	if (n % 12 == 3 || n % 12 == 9) {
		mut(2, 1, o);
		v[o] = 2;
	}
	for (i = 1; i <= n; ++i) {
		if (i % 2 == 1) {
			v[++o] = i;
		}
	}
	if (n % 12 == 8) {
		for (i = 1; i <= o; ++i) {
			if (i % 2 == 1) {
				long x = v[i];
				v[i] = v[i + 1];
				v[i + 1] = x;
			}
		}
	}
	if (n % 12 == 2) {
		v[p + 1] = 3;
		v[p + 2] = 1;
		mut(p + 4, 1, o);
		v[o] = 5;
	}
	if (n % 12 == 3 || n % 12 == 9) {
		mut(p + 3, 2, o);
		v[o - 1] = 1;
		v[o] = 3;
	}
	printf("%ld\n", o);
	for (i = 1; i <= o; ++i) {
		printf("%ld %ld\n", i, v[i]);
	}
	return 0;
}