Cod sursa(job #2973394)

Utilizator Luka77Anastase Luca George Luka77 Data 31 ianuarie 2023 21:19:49
Problema Oo Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <bits/stdc++.h>
#define FOR(WHATEVER) for(int i = 1; i <= WHATEVER; ++ i)
using namespace std;

/// INPUT / OUTPUT
const string problem = "oo";
ifstream fin(problem + ".in");
ofstream fout(problem + ".out");

/// GLOBAL VARIABLES
const int NMAX = 1e5 + 5, MOD = 1e9 + 7, INF = 1e9;
int n;
int arr[NMAX], secv[NMAX], dp[NMAX];

inline int calc(int st, int dr)
{
    dp[st + 1] = arr[st] + arr[st + 1];
    for(int i = st + 2; i <= dr; ++ i)
        dp[i] = max(dp[i-1], dp[i-3] + arr[i-1] + arr[i]);
    int temp = dp[dr];
    memset(dp, 0, sizeof(dp));
    return temp;
}

/// SOLUTION
inline void solution()
{
    arr[n + 1] = arr[1];
    int ans = INT_MIN;
    ans = max(ans, calc(1, n - 1));
    ans = max(ans, calc(2, n));
    ans = max(ans, calc(3, n + 1));
    fout << ans;
}

/// READING THE INPUT
int main()
{
    ios::sync_with_stdio(false);
    fin.tie(NULL);
    fout.tie(NULL);

    fin >> n;

    for(int i = 1; i <= n; ++ i)
        fin >> arr[i];

    solution();
}