Cod sursa(job #961548)

Utilizator XladhenianGrigorita Vlad-Stefan Xladhenian Data 12 iunie 2013 16:16:51
Problema Dame Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.74 kb

#include <fstream>
using namespace std;

long N;
long P[1000],I[1000];

int main(void)
{
    fstream fin("dame.in",ios::in);
    fstream fout("dame.out",ios::out);

    fin >> N;

    if (N == 1)
    {
        fout << "1\n1 1\n";
    }
    if (N == 2)
    {
        fout << "1\n1 1\n";
    }
    if (N == 3)
    {
        fout << "2\n1 1\n2 3\n";
    }
    if (N >= 4)
    {
        for (long a = 0;a < (N >> 1);a += 1)
        {
            P[a] = ((a + 1) * 2);
            I[a] = ((a + 1) * 2) - 1;
        }
        if (N & 1)
        {
            I[N >> 1] = (((N >> 1) + 1) * 2) - 1;
        }
        if ((N % 6) == 2)
        {
            I[0] = 3;
            I[1] = 1;
            long a = 2;
            while (a < (N >> 1))
            {
                I[a] = I[a + 1];
                a += 1;
            }
            I[(N >> 1) - 1] = 5;
        }
        if ((N % 6) == 3)
        {
            long a = 0;
            while (a < (N >> 1))
            {
                P[a] = P[a + 1];
                a += 1;
            }
            P[(N >> 1) - 1] = 2;

            a = 0;
            while (a < (N >> 1))
            {
                I[a] = I[a + 2];
                a += 1;
            }
            I[(N >> 1) - 1] = 1;
            I[(N >> 1) - 0] = 3;
        }
        fout << N << "\n";
        long c = 1;
        long a = 0;
        while (P[a] > 0)
        {
            fout << c << " " << P[a] << "\n";
            a += 1;
            c += 1;
        }
        a = 0;
        while (I[a] > 0)
        {
            fout << c << " " << I[a] << "\n";
            a += 1;
            c += 1;
        }
    }

    fin.close();
    fout.close();
    return 0;
}