Pagini recente » Cod sursa (job #204299) | Cod sursa (job #1625129) | Istoria paginii utilizator/horjurares | Cod sursa (job #1219785) | Cod sursa (job #2010937)
#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, v[200005];
bool bn[200005];
int main () {
fin >> n;
mx = -300;
for (i = 1; i <= n; i++)
{
fin >> v[i];
v[i+n] = v[i];
if (i >= 4 && v[i-1]+v[i-2]-v[i-3]-v[i] > mx)
{
mx = v[i-1]+v[i-2]-v[i-3]-v[i];
in = i+1;
}
}
sum = v[in-2]+v[in-3];
sf = in-4+n;
//cout << in << " " << sf << " " << n+in-5 << "\n";
//for (i = in; i < sf-1; i++)
// cout << v[i] << " "; cout << "\n";
for (i = in; i < sf-1; i++)
{
// calculez a
a = v[i]+v[i+1]-v[i+2];
x = v[i]+v[i+1];
if (i+2 >= sf) a += v[i+2];
// calculez b
b = v[i+1]+v[i+2]-v[i]-v[i+3];
y = v[i+1]+v[i+2];
if (i+3 >= sf) b += v[i+3];
// calculez c
c = v[i+2]+v[i+3]-v[i+1]-v[i+4];
z = v[i+2]+v[i+3];
if (i+4 >= sf) c += v[i+4];
// compar
if (a > b && a > c) { i += 2; sum += x; }
if (b > a && b > c) { i += 3; sum += y; }
if (c > a && c > b) { i += 4; sum += z; }
}
fout << sum << "\n";
}