Pagini recente » Istoria paginii runda/ada17/clasament | Cod sursa (job #810945) | Rating asdffff (asdfff) | Cod sursa (job #2226939) | Cod sursa (job #2014154)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");
int n, i, mx, in, sum, a, b, c, sf, x, y, z, t, v[200005], s[200005], rez;
int main () {
fin >> n;
for (i = 1; i <= n; i++)
{
fin >> v[i];
s[i] = s[i-1]+v[i];
v[i+n] = v[i];
}
for (i = n+1; i <= n*2; i++)
s[i] += s[i-1]+v[i-n];
for (in = 1; in <= 4; in++)
{
sf = in + n-4;
sum = v[sf+1]+v[sf+2];
for (i = in; i <= sf-2; i++)
{
a = b = c = -300;
t = s[sf-1]-s[i-1];
// calculez a
a = t - v[i+2];
if (i+2 >= sf) a += v[i+2];
// calculez b
if (i+2 < sf)
{
b = t-v[i]-v[i+3];
if (i+3 >= sf) b += v[i+3];
}
// calculez c
if (i+3 < sf)
{
c = t-v[i+1]-v[i+4];
if (i+4 >= sf) c += v[i+4];
}
// compar
if (a >= b && a >= c) { i += 2; sum += v[i]+v[i+1]; }
else if (b > a && b >= c) { i += 3; sum += v[i+1]+v[i+2]; }
else if (c > a && c > b) { i += 4; sum += v[i+2]+v[i+3]; }
}
if (sum > rez) rez = sum;
}
fout << rez << "\n";
}