Pagini recente » Profil Simon2712 | Diferente pentru utilizator/thinkphp intre reviziile 50 si 49 | Monitorul de evaluare | Diferente pentru utilizator/chiriacandrei25 intre reviziile 12 si 11 | Cod sursa (job #3233670)
#include <bitset>
#include <cmath>
#include <algorithm>
#include <numeric>
#include <deque>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <limits>
#include <list>
#include <map>
#include <unordered_map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
#define NMAX 200001
#define MAX 150001
#define pb push_back
#define MOD 1000000007
#define nl '\n'
#define INF 0x3f3f3f3
#define pii1 pair<int, pair<int,int>> (1,(1,2));
//#define int long long
#define pii pair<int,int>
#define tpl tuple<int,int,int>
using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");
int n,v[NMAX];
int dp[NMAX][4];
void go_from_1()
{
dp[1][1]=v[1]+v[2];
dp[2][1]=dp[1][1];
dp[3][1]=0;
for(int i=4;i<n;++i)
{
dp[i][1]=max(dp[i-1][1],dp[i-3][1]+v[i]+v[i+1]);
}
}
void go_from_2()
{
dp[1][2]=0;
dp[2][2]=v[2]+v[3];
dp[3][2]=dp[2][2];
for(int i=4;i<n;++i)
{
dp[i][2]=max(dp[i-1][2],dp[i-3][2]+v[i]+v[i+1]);
}
}
void go_from_3()
{
dp[3][3]=v[3]+v[4];
dp[4][3]=dp[3][3];
for(int i=5;i<n-2;++i)
dp[i][3]=max(dp[i-1][3],dp[i-3][3]+v[i]+v[i+1]);
dp[n][3]=v[1]+v[n];
dp[n][3]=max(dp[n][3],dp[n-3][3]+dp[n][3]);
}
signed main() {
fin>>n;
for(int i=1;i<=n;++i)
{
fin>>v[i];
}
go_from_1();
go_from_2();
go_from_3();
int mx=0;
for(int i=1;i<=n;++i)
{
mx=max({mx,dp[i][1],dp[i][2],dp[i][3]});
}
fout<<mx;
return 0;
}