Cod sursa(job #381981)
#include<fstream>
using namespace std;
const char iname[]="oo.in";
const char oname[]="oo.out";
const int maxn=100005;
ifstream f(iname);
ofstream g(oname);
int dp[maxn],i,n,a[maxn],maxt;
int main()
{
f>>n;
for(i=1;i<=n;++i)
f>>a[i];
a[0]=a[n];
for(i=3;i<=n;++i)
dp[i]=max(dp[i-3]+a[i]+a[i-1],dp[i-1]),maxt=max(maxt,dp[i]);
for(i=2;i<n;++i)
dp[i]=max((i>2?dp[i-3]:0)+a[i]+a[i-1],dp[i-1]),maxt=max(maxt,dp[i]);
--n;
for(i=1;i<n;++i)
dp[i]=max((i>2?dp[i-3]:0)+a[i]+a[i-1],dp[i-1]),maxt=max(maxt,dp[i]);
g<<maxt<<"\n";
f.close();
g.close();
return 0;
}