Cod sursa(job #1443163)

Utilizator eu3neuomManghiuc Teodor-Florin eu3neuom Data 27 mai 2015 03:16:14
Problema Dame Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.39 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

ifstream fin("dame.in");
ofstream fout("dame.out");

inline void swep(int &a, int &b){
    int aux = a;
    a = b;
    b = aux;
}

int main()
{
    int n;
    fin >> n;
    if(n == 1 || n == 2){
        fout << "1\n1 1";
        return 0;
    }
    if(n == 3){
        fout << "2\n1 1\n2 3";
        return 0;
    }
    vector < int > v;
    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){
        for(int i = 0; i + 1 < v.size(); i++){
            if(v[i] % 2 == 1){
                swep(v[i], v[i + 1]);
                i++;
            }
        }
    }
    if(n % 12 == 2){
        v.erase(find(v.begin(), v.end(), 5));
        v.push_back(5);
        vector < int > :: iterator it = find(v.begin(), v.end(), 1);
        swep(*it, *(it + 1));
    }
    if(n % 12 == 3 || n % 12 == 9){
        v.erase(find(v.begin(), v.end(), 1));
        v.erase(find(v.begin(), v.end(), 3));
        v.push_back(1);
        v.push_back(3);
    }
    fout << n << "\n";
    for(int i = 0; i < v.size(); i++){
        fout << i + 1 << " " << v[i] << "\n";
    }
    return 0;
}