Cod sursa(job #1752542)

Utilizator TimitocArdelean Andrei Timotei Timitoc Data 4 septembrie 2016 13:32:35
Problema Dame Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <iostream>
#include <cstdio>

using namespace std;

int main()
{
    freopen("dame.in", "r", stdin);
    freopen("dame.out", "w", stdout);

	int n;
	scanf("%d", &n);
    if (n <= 2)
		printf("%d\n%d %d", 1, 1, 1);
	else if (n == 3)
		printf("2\n1 1\n3 2");
    else {
        int par[1050], impar[1050];
        par[0] = impar[0] = 0;
		printf("%d\n", n);
        for (int i = 2; i <= n; i += 2) par[++par[0]] = i;
        for (int i = 1; i <= n; i += 2) impar[++impar[0]] = i;
		int k = 1;
        if (n % 6 == 2) {
            for (int i = 1; i <= par[0]; i++, k++)
				printf("%d %d\n", k, par[i]);
            printf("%d %d\n", k, 3); ++k;
            printf("%d %d\n", k, 1); ++k;
            impar[++impar[0]] = 5;
			for (int i = 4; i <= impar[0]; i++, k++)
				printf("%d %d\n", k, impar[i]);
        }
        else if (n % 6 == 3) {
			par[++par[0]] = 2;
			for (int i = 2; i <= par[0]; i++, k++)
				printf("%d %d\n", k, par[i]);
			impar[++impar[0]] = 1;
			impar[++impar[0]] = 3;
            for (int i = 3; i <= impar[0]; i++, k++)
				printf("%d %d\n", k, impar[i]);
        }
        else {
			for (int i = 1; i <= par[0]; i++, k++)
				printf("%d %d\n", k, par[i]);
			for (int i = 1; i <= impar[0]; i++, k++)
				printf("%d %d\n", k, impar[i]);
        }
    }

    return 0;
}