Cod sursa(job #994881)

Utilizator andreimaresuMaresu Andrei andreimaresu Data 6 septembrie 2013 15:48:55
Problema Dame Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.18 kb
#include<iostream>
#include<list>
#include<stdio.h>

using namespace std;

int main()
{
    freopen("dame.in","r",stdin);
    freopen("dame.out","w",stdout);
    list<int> dame1,dame2;
    int n,i,x,a,b,c,len;
    cin >> n;
    if(n<4)
    {
        if(n==1)
        {
            cout << n <<endl;
            cout <<"1 1";
        }
        else if (n==2)
        {
            cout << n-1<<endl;
            cout <<"1 1";
        }
        else
        {
            cout << n-1<<endl;
            cout <<"1 1"<<endl;
            cout <<"2 3";
        }
    }
    else
    {
        for(i=2;i<=n;i+=2)
        {
            dame1.push_back(i);
        }
        if(n%12==3 || n%12==9)
        {
            x=dame1.front();
            dame1.pop_front();
            dame1.push_back(x);
        }
        for(i=1;i<=n;i+=2)
        {
            dame2.push_back(i);
        }
        x=n%12;
        if(x==8)
        {
            for(i=1;i<=n;i+=4)
            {
                a=dame2.front();
                dame2.pop_front();
                b=dame2.front();
                dame2.pop_front();
                dame2.push_back(b);
                dame2.push_back(a);
            }
        }
        else if(x==2)
        {
            a=dame2.front();
            dame2.pop_front();
            b=dame2.front();
            dame2.pop_front();
            c=dame2.front();
            dame2.pop_front();
            dame2.push_back(c);
            dame2.push_front(a);
            dame2.push_front(b);
        }
        else if(x==3 || x==9)
        {
            a=dame2.front();
            dame2.pop_front();
            b=dame2.front();
            dame2.pop_front();
            dame2.push_back(a);
            dame2.push_back(b);
        }
        cout << n<<endl;
        len=dame1.size();
        for(i=1;i<=len;i++)
        {
            cout << i << " " << dame1.front()<<endl;
            dame1.pop_front();
        }
        x=i;
        len=dame2.size();
        for(i=0;i<len;i++)
        {
            cout << i+x << " " << dame2.front()<<endl;
            dame2.pop_front();
        }

    }
    return 0;
}