Cod sursa(job #1481593)

Utilizator enedumitruene dumitru enedumitru Data 4 septembrie 2015 20:48:44
Problema Dame Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.03 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("dame.in"); ofstream g("dame.out");
int n,k,v[1005];
int main()
{   f>>n;
    if(n<=2) g<<"1\n1 1";
    if(n==3) g<<"2\n1 2\n3 3";
    if(n>3)
    {   int i;
        for(i=1;i<=n>>1;++i)
            if(!(i==1 && (n%12==3 || n%12==9))) v[++k]=i<<1;
        if(n%12==3 || n%12==9) v[++k]=2;
        for(i=1;i<=n>>1;++i)
            if(!(i==3 && (n%12==2)))
                if(!((i==1 || i==2) && (n%12==3 || n%12==9))) v[++k]=(i<<1)-1;
        if(n&1) v[++k]=n;
        if(n%12==8) for(i=(n>>1)+1;i<=k;i+=2) swap(v[i],v[i+1]);
        else if(n%12==2) swap(v[(n>>1)+1],v[(n>>1)+2]), v[++k]=5;
                else if(n%12==3 || n%12==9) v[++k]=1, v[++k]=3;
        g<<k<<'\n';
        for(i=1;i<=k;++i) g<<i<<' '<<v[i]<<'\n';
    }
    g.close(); return 0;
}
/*
O solutie, se bazeaza pe un sablon de construire a solutiei in functie de restul lui n la 12.
Se insereaza numerele pare de la 2 la n intrO alta solutie , matematica, se bazeaza pe un sablon
de construire a solutiei in functie de restul lui n la 12.
Se insereaza numerele pare de la 2 la n intr-o lista
Daca restul lui n la 12 este 3 sau 9 se muta 2 la sfarsitul listei
Se insereaza numerele impare de la 1 la n in lista
Daca restul este 8 se interschimba perechile (3 1, 7 5, ...)
Daca restul este 2 se interschimba 1 cu 3 si 5 se muta la sfarsitul listei
Daca restul este 3 sau 9 se muta 1 si 3 la sfarsitul listei
Lista va codifica o solutie cum s-a precizat si inainte, al i-lea element reprezetand o dama
pe randul i si pe coloana listai.-o lista
Daca restul lui n la 12 este 3 sau 9 se muta 2 la sfarsitul listei
Se insereaza numerele impare de la 1 la n in lista
Daca restul este 8 se interschimba perechile (3 1, 7 5, ...)
Daca restul este 2 se interschimba 1 cu 3 si 5 se muta la sfarsitul listei
Daca restul este 3 sau 9 se muta 1 si 3 la sfarsitul listei
Lista va codifica o solutie cum s-a precizat si inainte, al i-lea element reprezetand o dama
pe randul i si pe coloana listai.
*/