Cod sursa(job #1895141)

Utilizator RaZxKiDDavid Razvan RaZxKiD Data 27 februarie 2017 20:07:06
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>
#include <cstring>

using namespace std;

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

int n, D[100005],DP[100005];

void read(){
    in>>n;
    for(int i=1;i<=n;i++)
        in>>D[i];
}
void solve(){
    int rmax=0;
    //! 1 cu n
    DP[2]=DP[1]=D[n]+D[1];
    for(int i=3;i<n-1;i++){
        DP[i]=max(DP[i-3]+D[i-1]+D[i], DP[i-1]);
    }
    rmax=max(rmax, DP[n-2]);
    memset(DP,0,sizeof(DP));
    //! 1 cu 2
    DP[2]=D[1]+D[2];
    for(int i=3;i<n;i++){
        DP[i]=max(DP[i-3]+D[i-1]+D[i], DP[i-1]);
    }
    rmax=max(rmax, DP[n-1]);
    memset(DP,0,sizeof(DP));
    //! 1 nu se ia
    DP[1]=0;
    for(int i=3;i<=n;i++){
        DP[i]=max(DP[i-3]+D[i-1]+D[i], DP[i-1]);
    }
    rmax=max(rmax, DP[n]);
    out<<rmax;
}
int main(){
    read();
    solve();
    return 0;
}