Pagini recente » Monitorul de evaluare | Cod sursa (job #978069) | Istoria paginii utilizator/hegedus | Cod sursa (job #304879) | Cod sursa (job #2014166)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");
int n, i, j, 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;
for (j = i; j < sf; j++) t += v[j];
a = t;
if (i+2 < sf) a -= v[i+2];
if (i+2 < sf)
{
b = t-v[i];
if (i+3 < sf) b -= v[i+3];
}
if (i+3 < sf)
{
c = t-v[i]-v[i+1];
if (i+4 < sf) c -= v[i+4];
}
// compar
if (a >= b && a >= c) { sum += v[i]+v[i+1]; i += 2; }
else if (b > a && b >= c) { sum += v[i+1]+v[i+2]; i += 3; }
else if (c > a && c > b) { sum += v[i+2]+v[i+3]; i += 4; }
}
if (sum > rez) rez = sum;
}
fout << rez << "\n";*/
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) { sum += v[i]+v[i+1]; i += 2; }
else if (b > a && b >= c) { sum += v[i+1]+v[i+2]; i += 3; }
else if (c > a && c > b) { sum += v[i+2]+v[i+3]; i += 4; }
}
if (sum > rez) rez = sum;
}
fout << rez << "\n";
}