Pagini recente » Cod sursa (job #1767736) | Cod sursa (job #2615101) | Monitorul de evaluare | Cod sursa (job #1523683) | Cod sursa (job #198174)
Cod sursa(job #198174)
#include <fstream>
#include <iostream>
#define vv 100001
#define max(a,b) ((a) > (b) ? (a) : (b))
using namespace std;
int v[3][vv],a[vv],n,maxim;
ifstream fin ("oo.in");
ofstream fout ("oo.out");
void Oo(int st, int dr)
{
memset(v,0,sizeof(v));
v[1][st]=a[st];
v[2][st]=a[st]+a[st-1];
for (int i=st+1; i<=dr; i++)
{
v[0][i]=max(v[0][i-1],v[2][i-1]);
v[1][i]=v[0][i-1]+a[i];
v[2][i]=v[1][i-1]+a[i];
}
if (max(v[0][dr],v[2][dr])>maxim)
maxim=max(v[0][dr],v[2][dr]);
}
int main()
{
fin >> n;
for (int i=1; i<=n; i++)
fin >> a[i];
a[0]=a[n];
maxim=0;
Oo(1,n-2);
Oo(2,n-1);
Oo(3,n);
fout << maxim << "\n";
return 0;
}