Pagini recente » Cod sursa (job #1882121) | Cod sursa (job #2899140) | Cod sursa (job #3217830) | Cod sursa (job #2653498) | Cod sursa (job #2127678)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("oo.in");
ofstream out("oo.out");
typedef long long int ll;
#define LENGTH 100001
int v[LENGTH], v2[LENGTH];
ll sum[LENGTH], sum2[LENGTH];
bool ver[LENGTH],ver2[LENGTH];
int main()
{
int n, i;
in >> n;
for (i = 1; i <= n; i++)
{
in >> v[i];
v2[i + 1] = v[i];
}
v2[1] = v[n];
v[n + 1] = 0;
sum[2] = v[1] + v[2];
ver[2] = 1;
for (i = 3; i <= n-1; i++)
{
if (ver[i - 1])
{
if (sum[i - 1] < sum[i - 3] + v[i] + v[i - 1])
{
ver[i - 1] = 0;
sum[i] = sum[i - 3] + v[i] + v[i - 1];
ver[i] = 1;
}
else sum[i] = sum[i - 1];
}
else if (ver[i - 2])
{
if (sum[i - 2] < sum[i - 4] + v[i - 1] + v[i])
{
ver[i - 2] = 0;
sum[i] = sum[i - 4] + v[i - 1] + v[i];
ver[i] = 1;
}
else sum[i] = sum[i - 2];
}
else
{
sum[i] = v[i] + v[i - 1] + sum[i - 3];
ver[i] = 1;
}
}
sum2[2] = v2[1] + v2[2];
ver2[2] = 1;
for (i = 3; i <= n - 1; i++)
{
if (ver2[i - 1])
{
if (sum2[i - 1] < sum2[i - 3] + v2[i] + v2[i - 1])
{
ver2[i - 1] = 0;
sum2[i] = sum2[i - 3] + v2[i] + v2[i - 1];
ver2[i] = 1;
}
else sum2[i] = sum2[i - 1];
}
else if (ver2[i - 2])
{
if (sum2[i - 2] < sum2[i - 4] + v2[i - 1] + v2[i])
{
ver2[i - 2] = 0;
sum2[i] = sum2[i - 4] + v2[i - 1] + v2[i];
ver2[i] = 1;
}
else sum2[i] = sum2[i - 2];
}
else
{
sum2[i] = v2[i] + v2[i - 1] + sum2[i - 3];
ver2[i] = 1;
}
}
out << max(sum[n - 1], sum2[n - 1]);
return 0;
}