Cod sursa(job #2047488)

Utilizator modulopaulModulopaul modulopaul Data 24 octombrie 2017 21:32:43
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <iostream>
#include <cstdio>
#define MAXN 100001

using namespace std;
FILE *fin=fopen("oo.in","r"),*fout=fopen("oo.out","w");
int n,v[MAXN],smax=-1,opt[MAXN];
void calc(int in,int out){
    opt[in]=v[in]+v[in+1];
    opt[in+1]=max(opt[in],v[in+1]+v[in+2]);
    opt[in+2]=max(opt[in+1],v[in+2]+v[in+3]);
    for(int i=in+3;i<out;i++){
        opt[i]=max(opt[i-1],opt[i-3]+v[i]+v[i+1]);
    }
    if(opt[out-1]>smax)
        smax=opt[out-1];
}
int main(){
    fscanf(fin,"%d",&n);
    for(int i=1;i<=n;i++){
        fscanf(fin,"%d",&v[i]);
    }
    v[0]=v[n];
    calc(1,n-1);
    calc(2,n);
    calc(0,n-2);
    fprintf(fout,"%d",smax);
    return 0;
}