Pagini recente » Cod sursa (job #1439630) | Cod sursa (job #1422022) | Cod sursa (job #3256603) | Cod sursa (job #2748686) | Cod sursa (job #2516415)
#include <fstream>
#define inf 999
using namespace std;
ifstream in("oo.in");
ofstream out("oo.out");
const int lim=1e5+3;
int w[lim],v[lim];
bool restrictie[lim];
int main()
{
ios_base::sync_with_stdio(false);
in.tie(0),out.tie(0);
int n,maxx=-1,ind;
in>>n;
for(int i=0;i<n;++i)
in>>w[i];
w[n]=w[0];
for(int i=0;i<n;++i)
if(w[i]+w[i+1]>maxx)
maxx=w[i]+w[i+1],ind=i;
int nr=-1;
for(int i=ind;i<n;++i)
++nr,v[nr]=w[i];
for(int i=0;i<=ind-1;++i)
++nr,v[nr]=w[i];
int sumaa;
sumaa=v[0]+v[1];
restrictie[n-1]=restrictie[0]=restrictie[1]=restrictie[2]=1;
for(int i=2;i<n;++i)
if(restrictie[i]==0)
{
int sum1=v[i%n]+v[(i+1)%n];
if(restrictie[i%n]==1 or restrictie[(i+1)%n]==1)
sum1=-inf;
int sum2=v[(i+1)%n]+v[(i+2)%n];
if(restrictie[(i+1)%n]==1 or restrictie[(i+2)%n]==1)
sum2=-inf;
int sum3=v[(i+2)%n]+v[(i+3)%n];
if(restrictie[(i+2)%n]==1 or restrictie[(i+32)%n]==1)
sum3=-inf;
int sum=max(sum1,max(sum2,sum3));
if(sum!=-inf)
{
if(sum1==sum)
sumaa+=sum,restrictie[i%n]=restrictie[(i+1)%n]=restrictie[(i+2)%n]=1;
else if(sum2==sum)
sumaa+=sum,restrictie[(i+1)%n]=restrictie[(i+2)%n]=restrictie[(i+3)%n]=1;
else sumaa+=sum,restrictie[(i+2)%n]=restrictie[(i+3)%n]=restrictie[(i+4)%n]=1;
}
}
out<<sumaa;
return 0;
}