Cod sursa(job #479639)

Utilizator APOCALYPTODragos APOCALYPTO Data 24 august 2010 17:25:26
Problema 12-Perm Scor 65
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
using namespace std;
#include<iostream>
#include<fstream>
#include<cstring>
int viz[100],N,sum,T[10000000];
ofstream fout("12perm.out");
void back(int k,int last)
{

    if(k>N)
      sum++;//

      else
      {if(viz[last-1]==0&&last-1<=N&&last-1>=1)
         {   viz[last-1]=1;
             back(k+1,last-1);
             viz[last-1]=0;
         }
       if(viz[last+1]==0&&last+1<=N&&last+1>=1)
         {   viz[last+1]=1;
             back(k+1,last+1);
             viz[last+1]=0;
         }
        if(viz[last+2]==0&&last+2<=N&&last+2>=1)
         {   viz[last+2]=1;
             back(k+1,last+2);
             viz[last+2]=0;
         }
        if(viz[last-2]==0&&last-2<=N&&last-2>=1)
         {   viz[last-2]=1;
             back(k+1,last-2);
             viz[last-2]=0;
         }
      }


}
void solve()
{int i;
    T[1]=1;
    T[2]=2;
    T[3]=6;
    T[4]=12;
    for(i=5;i<=N;i++)
    T[i]=(T[i-1]+T[i-3]+2*(i-2))&((1<<20)-1);


}

void cit()
{

    ifstream fin("12perm.in");
    fin>>N;
    fin.close();
}
int main()
{int i;

    cit();
    sum=0;
    solve();
    /*for( i=1;i<=N;i++)
    {   for(int j=1;j<=N;j++)
         viz[j]=0;
           viz[i]=1;
        //cout<<i<<"\n ";
        back(2,i);

        //viz[i]=0;
    }*/
    fout<<T[N];
   fout.close();
    return 0;
}