Cod sursa(job #1481591)

Utilizator enedumitruene dumitru enedumitru Data 4 septembrie 2015 20:46:05
Problema Dame Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.11 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';//printf("%d\n", k );
        for(i=1;i<=k;++i) g<<i<<' '<<V[i]<<'\n';
        //printf("%d %d\n", i, V[i]);
    }
    g.close(); return 0;
}
/*
O 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 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.
*/