Pagini recente » Cod sursa (job #1334996) | Cod sursa (job #283120) | Cod sursa (job #1861506) | Cod sursa (job #2180154) | Cod sursa (job #2672251)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("oo.in");
ofstream out("oo.out");
const int Nmax = 1e5 + 5,
inf = 0x3f3f3f3f;
int dp[Nmax] = {0},//suma maxima pana la pozitia i
v[Nmax],
n;
int main()
{
in>>n;
for(int i = 1; i <= n; i++)
in>>v[i];
int ma = -inf;
for(int i = 1; i <= 3; i++)
{
int j;
if(i == 1)
dp[1] = v[1], j = 3;
else if(i == 2)
dp[1] = 0, dp[2] = v[2] + v[3], j = 3;
else
dp[3] = v[n] + v[1], j = 3;
for(; j <= n; j++)
dp[j] = max(dp[j-1], v[j] + v[j-1] + dp[j-3]);
// for(int i = 1; i <= n; i++)
// cout<<dp[i]<<' ';
// cout<<endl;
if(ma < dp[n])
ma = dp[n];
memset(dp, 0, sizeof dp);
}
out<<ma;
}