Cod sursa(job #2640711)

Utilizator xCata02Catalin Brita xCata02 Data 7 august 2020 16:57:21
Problema Oo Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define endl "\n"

#define Nmax 100010


ifstream fin  ("oo.in");
ofstream fout ("oo.out");

#define cin  fin
#define cout fout

/*
ifstream fin("test.in");
#define cin fin
*/

int n;
int def[Nmax];
int dp1[Nmax], dp2[Nmax], dp3[Nmax];

void solve() {
    cin >> n;
    for(int i = 1; i <= n; i++) {
        cin >> def[i];
    }

    /// Primu caz
    for(int i = 1; i <= n - 2; i++) {
        dp1[i] = max(dp1[i - 1], dp1[max(i - 3, 0)] + def[i] + def[i + 1]);
    }
    int val1 = dp1[n - 2];
    /// Al doilea caz
    for(int i = 2; i <= n - 1; i++) {
        dp2[i] = max(dp2[i - 1], dp2[max(i - 3, 0)] + def[i] + def[i + 1]);
    }
    int val2 = dp2[n - 1];
    /// Al treilea caz aparent
    for(int i = 3; i <= n; i++) {
        dp3[i] = max(dp3[i - 1], dp3[max(i - 3, 0)] + def[i] + def[i + 1]);
    }
    int val3 = dp3[n];


    /*
    for(int i = 1; i <= n; i++) {
        cout << dp2[i] << " ";
    }
    cout << endl;
    }
    */
    cout << max({val1, val2, val3});
}

int main() {
	ios_base::sync_with_stdio(0);
	cin .tie(0);
	cout.tie(0);

	int testCases = 1;
	//cin >> testCases;
	while(testCases--) {
		solve();
	}
}