Cod sursa(job #464148)

Utilizator andrei.dAndrei Diaconeasa andrei.d Data 18 iunie 2010 22:49:34
Problema 12-Perm Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <cstdio>

#define file_in "12perm.in"
#define file_out "12perm.out"

int n;
int p[101];
int viz[1010];
int nr;

void citire()
{
    //freopen(file_in,"r",stdin);
    //freopen(file_out,"w",stdout);

    scanf("%d", &n);
}

inline int abs(int a) { return a>=0?a:-a; }

void back(int k)
{
    int i;
    if (k==n+1)
    {
        int ok=0;
        for (i=1;i<n && !ok;++i)
             if (abs(p[i]-p[i+1])>=3)
                 ok=1;
        if (!ok)
        {
            nr++;
            for (i=1;i<=n;++i)
                 printf("%d ", p[i]);
                 printf("\n");
        }
    }
    for (i=1;i<=n;++i)
        if (!viz[i])
        {
            viz[i]=1;
            p[k]=i;
            back(k+1);
            viz[i]=0;
        }
}

#define mod (1<<20)-1

void solve()
{
    //back(1);
    int a=2;
    int b=6;
    int c=12;
    int i,aux,z;

    for (i=5;i<=n;++i)
    {
        z=c;
        aux=a+c+(2*(i-2));
        aux&=mod;
        a=aux;
        c=b;
        b=z;
    }

    printf("%d\n", a);
}

int main()
{
    citire();
    solve();

    fclose(stdin);
    fclose(stdout);

    return 0;
}