Cod sursa(job #3295754)

Utilizator mostyMosteanu Tudor-Radu mosty Data 8 mai 2025 10:35:06
Problema Oo Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
using namespace std;

ifstream cin("oo.in");
ofstream cout("oo.out");

int n, dp1[100005], dp2[100005], dp3[100005], v[100005];
long long s1, s2, s3;

void cazul1() {
	dp1[1] = 0;
	dp1[2] = v[1] + v[2];
	dp1[3] = dp1[2];
	for(int i=4;i<=n-1;i++) dp1[i] = max(v[i] + v[i-1] + dp1[i-3], dp1[i-1]);
	s1 = dp1[n-1];
}

void cazul2() {
	dp2[2] = 0;
	dp2[3] = v[2] + v[3];
	dp2[4] = dp2[3];
	for(int i=5;i<=n;i++) dp2[i] = max(v[i] + v[i-1] + dp2[i-3], dp2[i-1]);
	s2 = dp2[n];
}

void cazul3() {
	dp3[n] = 0;
	dp3[1] = v[1] + v[n];
	dp3[2] = dp3[1];
	for(int i=3;i<=n-2;i++) dp3[i] = max(v[i] + v[i-1] + dp3[i-3], dp3[i-1]);
	s3 = dp3[n-2];
}

int main() {
    cin>>n;
    for(int i=1;i<=n;i++) cin>>v[i];
    cazul1();
    cazul2();
    cazul3();
    cout<<max(s1, max(s2, s3));
    return 0;
}