Cod sursa(job #1329364)

Utilizator alexandra_udristoiuUdristoiu Alexandra Maria alexandra_udristoiu Data 29 ianuarie 2015 14:12:53
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.42 kb
#include<fstream>
using namespace std;
int n, i, a, b, c, maxim;
int v[100001], w1[100001], w2[100001], w3[100001];
ifstream fin("oo.in");
ofstream fout("oo.out");
int main(){
    fin>> n;
    for(i = 1; i <= n; i++){
        fin>> v[i];
    }
    w1[2] = v[1] + v[2];
    if(w1[2] < v[2] + v[3]){
        w1[3] = v[2] + v[3];
    }
    else{
        w1[3] = w1[2];
    }
    for(i = 4; i < n; i++){
        if(w1[i-1] < w1[i-3] + v[i-1] +v[i]){
            w1[i] = w1[i-3] + v[i-1] + v[i];
        }
        else{
            w1[i] = w1[i-1];
        }
    }
    a = w1[n-1];
    w2[3] = v[2] + v[3];
    if(w2[3] < v[3] + v[4]){
        w2[4] = v[3] + v[4];
    }
    else{
        w2[4] = w2[3];
    }
    for(i = 5; i <= n; i++){
        if(w2[i-1] < w2[i-3] + v[i-1] +v[i]){
            w2[i] = w2[i-3] + v[i-1] + v[i];
        }
        else{
            w2[i] = w2[i-1];
        }
    }
    b = w2[n];
    w3[1]= v[n] + v[1];
    if(w3[1] < v[1] + v[2]){
        w3[2] = v[1] + v[2];   
    }
    else{
        w3[2] = w3[1];
    }
    for(i = 3; i < n - 1; i++){
        if(w3[i-1] < w3[i-3] + v[i-1] +v[i]){
            w3[i] = w3[i-3] + v[i-1] + v[i];
        }
        else{
            w3[i] = w3[i-1];
        }
    }
    c = w3[n-2];
    maxim = a;
    if(b > maxim){
        maxim = b;
    }
    if(c > maxim){
        maxim = c;
    }
    fout<< maxim;
    return 0;
}