Cod sursa(job #1722100)

Utilizator alexpetrescuAlexandru Petrescu alexpetrescu Data 27 iunie 2016 12:33:53
Problema Oo Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <cstdio>
#define MAXN 100000
int d[MAXN+1], v[MAXN+1];
inline int max2(int a, int b){
    if(a>b) return a;
    else return b;
}
inline int dinamica(int st, int dr){
    if(st>=dr) return 0;
    d[st]=d[st-1]=0;
    d[st+1]=v[st]+v[st+1];
    for(int i=st+2; i<=dr; i++) d[i]=max2(d[i-1], v[i]+v[i-1]+d[i-3]);
    return d[dr];
}
int main(){
    int n, i, ans;
    FILE *fin, *fout;
    fin=fopen("oo.in", "r");
    fout=fopen("oo.out", "w");
    fscanf(fin, "%d", &n);
    for(i=1; i<=n; i++){
        fscanf(fin, "%d", &v[i]);
    }
    ans=max2(dinamica(2, n), max2(dinamica(1, n-1), v[n]+v[1]+dinamica(3, n-1)));
    fprintf(fout, "%d\n", ans);
    fclose(fin);
    fclose(fout);
    return 0;
}