Cod sursa(job #1135288)

Utilizator TibixbAndrei Tiberiu Tibixb Data 7 martie 2014 17:13:57
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<fstream>
#include<algorithm>
using namespace std;
int n, v[100003], d[100003], i, sol;
int maxim(int x, int y){
    return (x>y?x:y);
}
ifstream in("oo.in");
ofstream out("oo.out");
int main(){
    in>>n>>v[1]>>v[2];
    if(n==2){
        out<<v[1]+v[2];
    }
    if(n==3){
        in>>v[3];
        sort(v+1, v+4);
        out<<v[2]+v[3];
    }
    if(n>=4){
        d[2]=v[1]+v[2];
        for(i=3; i<=n-1; i++){
            in>>v[i];
            d[i]=maxim(d[i-1], (v[i]+v[i-1]+d[i-3]));
        }
        in>>v[n];
        sol=d[n-1];
        d[0]=0; d[1]=0; d[2]=0;
        d[3]=v[2]+v[3];
        for(i=4; i<=n; i++){
            d[i]=maxim(d[i-1], (v[i]+v[i-1]+d[i-3]));
        }
        if(d[n]>sol)
            sol=d[n];
        d[0]=0;
        d[1]=v[1]+v[n];
        d[2]=maxim(d[1], v[2]+v[1]);
        for(i=3; i<=n-2; i++){
            d[i]=maxim(d[i-1], (v[i]+v[i-1]+d[i-3]));
        }
        if(d[n-2]>sol)
            sol=d[n-2];
        out<<sol;
    }
    return 0;
}