Cod sursa(job #1500890)

Utilizator fanache99Constantin-Buliga Stefan fanache99 Data 12 octombrie 2015 20:32:26
Problema Oo Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<cstdio>
using namespace std;
int dp[100010],v[100010];
int maxim(int a,int b){
    if(a<b)
        return b;
    return a;
}
int main(){
    freopen("oo.in","r",stdin);
    freopen("oo.out","w",stdout);
    int n,sol=-1,i;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        scanf("%d",&v[i]);
    dp[2]=dp[3]=dp[4]=v[1]+v[2];
    for(i=5;i<n;i++)
        dp[i]=maxim(dp[i-1],dp[i-3]+v[i]+v[i-1]);
    sol=maxim(sol,dp[n-1]);
    dp[1]=dp[2]=dp[3]=v[1]+v[n];
    for(i=4;i<n-1;i++)
        dp[i]=maxim(dp[i-1],dp[i-3]+v[i]+v[i-1]);
    dp[0]=dp[1]=dp[2]=0;
    for(i=3;i<=n;i++)
        dp[i]=maxim(dp[i-1],dp[i-3]+v[i]+v[i-1]);
    printf("%d",sol);
    return 0;
}