Cod sursa(job #1050073)

Utilizator Athena99Anghel Anca Athena99 Data 8 decembrie 2013 08:44:06
Problema Dame Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.37 kb
#include <fstream>

using namespace std;

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

const int nmax= 1000;

int v[nmax+1];

int main(  ) {
    int n;
    fin>>n;
    if ( n<=2 ) {
        fout<<"1\n1 1\n";
    } else if ( n==3 ) {
        fout<<"2\n1 1\n3 2\n";
    } else {
        fout<<n<<"\n";
        int k= 0;
        for ( int i= 2; i<=n; i+= 2 ) {
            v[++k]= i;
        }
        if ( n%6==3 ) {
            for ( int i= 1; i<k; ++i ) {
                v[i]= v[i+1];
            }
            v[k]= 2;
        }
        
        for ( int i= 1; i<=k; ++i ) {
            fout<<i<<" "<<v[i]<<"\n";
        }
        k= 0;
        for ( int i= 1; i<=n; i+= 2 ) {
            v[++k]= i;
        }
        if ( n%12==8 ) {
            for ( int i= 2; i<=n; i+= 2 ) {
                int aux= v[i-1];
                v[i-1]= v[i];
                v[i]= aux;
            }
        }
        if ( n%12== 2 ) {
            int aux= v[1];
            v[1]= v[2];
            v[2]= aux;
            for ( int i= 3; i<k; ++i ) {
                v[i]= v[i+1];
            }
            v[k]= 5;
        }
        if ( n%6==3 ) {
            for ( int i= 1; i<=k-2; ++i ) {
                v[i]= v[i+2];
            }
            v[k-1]= 1;
            v[k]= 3;
        }

        for ( int i= 1; i<=k; ++i ) {
            fout<<n/2+i<<" "<<v[i]<<"\n";
        }
    }

    return 0;
}