Pagini recente » Borderou de evaluare (job #498923) | Cod sursa (job #231222) | Cod sursa (job #915994) | Borderou de evaluare (job #2487811) | Cod sursa (job #2656399)
#include <fstream>
using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");
const int nmax=100000;
int v[nmax+2],d[nmax+1];
int main(){
int n;
fin>>n;
for(int i=1;i<=n;i++){
fin>>v[i];
}
v[n+1]=v[1];
d[1]=0;
d[2]=0;
d[3]=0;
d[4]=v[2]+v[3];
for(int i=5;i<=n;i++){
d[i]=max(d[i-1],d[i-3]+v[i-2]+v[i-1]);
}
int sol=0;
for(int i=1;i<=n;i++){
if(sol<d[i]){
sol=d[i];
}
}
d[1]=0;
d[2]=0;
d[3]=v[1]+v[2];
for(int i=4;i<=n;i++){
d[i]=max(d[i-1],d[i-3]+v[i-2]+v[i-1]);
}
for(int i=1;i<=n;i++){
if(sol<d[i]){
sol=d[i];
}
}
d[1]=0;
d[2]=v[n]+v[1];
for(int i=3;i<=n;i++){
d[i]=max(d[i-1],d[i-3]+v[i-2]+v[i-1]);
}
for(int i=1;i<=n;i++){
if(sol<d[i]){
sol=d[i];
}
}
fout<<sol;
return 0;
}