Cod sursa(job #2014304)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 23 august 2017 13:55:08
Problema Dame Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <bits/stdc++.h>

const int MAXN = (int) 1e3;

int v[MAXN + 1];

int main() {
    FILE *fi, *fout;
    int i, n, j;
    fi = fopen("dame.in" ,"r");
    fout = fopen("dame.out" ,"w");
    fscanf(fi,"%d " ,&n);
    int sz = 0;
    for(i = 2; i <= n; i += 2)
        v[++sz] = i;
    if(n % 12 == 3 || n % 12 == 9) {
        for(i = 2; i <= sz; i++)
            v[i - 1] = v[i];
        v[sz] = 2;
    }
    int p = sz + 1;
    for(i = 1; i <= n; i += 2)
        v[++sz] = i;
    if(n % 12 == 8) {
        for(i = p; i <= sz; i += 2)
            std::swap(v[i], v[i + 1]);
    }
    if(n % 12 == 2) {
        std::swap(v[p], v[p + 1]);
        for(i = p + 3; i <= sz; i++)
            v[i - 1] = v[i];
        v[sz] = 5;
    }
    if(n % 12 == 3 || n % 12 == 9) {
        i = 1;
        while(v[i] != 1)
            i++;
        for(j = i + 1; j <= sz; j++)
            v[j - 1] = v[j];
        v[sz] = 1;
        i = 1;
        while(v[i] != 3)
            i++;
        for(j = i + 1; j <= sz; j++)
            v[j - 1] = v[j];
        v[sz] = 3;
    }
    fprintf(fout,"%d\n" ,n);
    for(i = 1; i <= sz; i++)
        fprintf(fout,"%d %d\n" ,i,v[i]);
    fclose(fi);
    fclose(fout);
    return 0;
}