Cod sursa(job #1104085)

Utilizator beldeabogdanBogdan Beldea beldeabogdan Data 10 februarie 2014 14:09:21
Problema Dame Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.46 kb
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;

vector <int> v;
vector <int> :: iterator it;
int n;

int main() {
    freopen("dame.in","r",stdin);
    freopen("dame.out","w",stdout);
    scanf("%d",&n);
    if (n==2) {
        printf("1\n1 1\n");
        return 0;
    }
    if (n==3) {
        printf("2\n1 1\n2 3\n");
        return 0;
    }
    for (int i=2;i<=n;i+=2) v.push_back(i);
    if (n%12 == 3 || n%12 == 9) {
        v.erase(v.begin());
        v.push_back(2);
    }
    for (int i=1;i<=n;i+=2) v.push_back(i);
    if (n%12 == 8) {
        vector <int> :: iterator ct;
        vector <int> :: iterator tc;
        tc = v.begin()+n/2;
        ct = tc+1;
        while (tc != v.end() && ct != v.end()) {
            swap(*tc,*ct);
            tc = ct+1;
            ct = tc+1;
        }
    }
    if (n%12 == 2) {
        vector <int> :: iterator ct;
        vector <int> :: iterator tc;
        tc = it+1;
        ct = tc+1;
        swap(*ct,*tc);
        ct++;
        v.erase(ct);
        v.push_back(5);
    }
    if (n%12 == 3 || n%12 == 9) {
        vector <int> :: iterator ct;
        vector <int> :: iterator tc;
        tc = v.begin()+n/2;
        ct = tc+1;
        v.erase(ct);
        v.erase(tc);
        v.push_back(1);
        v.push_back(3);
    }
    printf("%d\n",v.size());
    int i = 1;
    for (it=v.begin();it!=v.end();it++) printf("%d %d \n",i++,*it);
    return 0;
}