Cod sursa(job #121680)

Utilizator anamaria1Ozorchevici Ana Maria anamaria1 Data 9 ianuarie 2008 14:27:32
Problema Oo Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<fstream.h>
#define dim 40000
long n,a[dim],rez;
int p2[7]={1,2,4,8,16,32,64};
char oo[dim];
long max(long x,long y)
{return x>y ? x:y;}
int main()
{long i,j,k;
ifstream f("oo.in");
ofstream g("oo.out");
int ind,x;
char mask;
f>>n;
for(i=0;i<n;i++)
 {f>>x;
  ind=6;
  while(x)
   {if(x>=p2[ind])
     {mask=1;mask=mask<<ind;
      oo[i]=oo[i]|mask;
      x=x-p2[ind];
      ind--;
     }
     else ind--;
   }
 }
f.close();
if(n==2) rez=(int)oo[0]+(int)oo[1];
 else
  for(k=0;k<=2;k=(k+1)%n)
   {a[k]=0;a[(k+1)%n]=0;
    a[(k+2)%n]=oo[(k+1)%n]+oo[(k+2)%n];
    for(i=(k+3)%n;i!=k;i=(i+1)%n)
     a[i]=max(a[(i-1+n)%n],a[(i-3+n)%n]+(int)oo[(i-1+n)%n]+(int)oo[i]);
    rez=max(rez,a[(k-1+n)%n]);
   }
g<<rez<<'\n';
g.close();
return 0;
}