Pagini recente » Cod sursa (job #2764612) | Cod sursa (job #2622799) | Cod sursa (job #145253) | Cod sursa (job #701908) | Cod sursa (job #2421917)
#include<bits/stdc++.h>
using namespace std;
#define MAXN 100001
int v[MAXN], d[MAXN][3];
int main(){
FILE*fin=fopen("oo.in", "r");
FILE*fout=fopen("oo.out", "w");
int n, i, ans1, ans2, ans3;
fscanf(fin, "%d", &n);
for(i=1; i<=n; i++)
fscanf(fin, "%d", &v[i]);
//d[i][2]=d[i-1][1]+v[i];
//d[i][1]=d[i-1][0]+v[i];
//d[i][0]=max(d[i][0], d[i][2]);
d[1][0]=0; d[1][1]=v[1]; d[1][2]=0;//iei pe primu nu iei pe ult
for(i=2; i<=n; i++){
d[i][0]=max(d[i-1][0], d[i-1][2]);
d[i][1]=d[i-1][0]+v[i];
d[i][2]=d[i-1][1]+v[i];
}
ans1=max(d[n-1][0], d[n-1][2]);//iei pe ult nu iei pe primu
for(i=1; i<=n; i++)
d[i][0]=d[i][1]=d[i][2]=0;
// printf("%d ", ans1);
d[2][0]=0; d[2][1]=v[2]; d[2][2]=0;
for(i=3; i<=n; i++){
d[i][0]=max(d[i-1][0], d[i-1][2]);
d[i][1]=d[i-1][0]+v[i];
d[i][2]=d[i-1][1]+v[i];
}
ans2=max(d[n][0], d[n][2]);
for(i=1; i<=n; i++)
d[i][0]=d[i][1]=d[i][2]=0;
d[3][0]=0; d[3][1]=v[3]; d[3][2]=0;//iei si pe ult si pe primu
for(i=4; i<=n; i++){
d[i][0]=max(d[i-1][0], d[i-1][2]);
d[i][1]=d[i-1][0]+v[i];
d[i][2]=d[i-1][1]+v[i];
}
ans3=d[n][2]+v[1];
fprintf(fout, "%d", max(ans3, max(ans1, ans2)));
return 0;
}