Cod sursa(job #1136101)

Utilizator iuli33Iuliana iuli33 Data 8 martie 2014 19:20:55
Problema Oo Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include<fstream>
using namespace std;
ifstream in("oo.in");
ofstream out("oo.out");

int n, v[100002], suma[100002], aleg[2][100002];
void citire(){
    in>>n;
    for (int i=1; i<=n; i++)
        in>>v[i];
}

void rez(){
    suma[1]=v[1]+v[n];
    for (int i=2; i<=n; i++)
        suma[i]=v[i-1]+v[i];
    aleg[0][n]=suma[n];
    aleg[0][n-1]=suma[n-1];
    aleg[0][n-2]=suma[n-2];
    aleg[1][n]=1;
    aleg[1][n-1]=1;
    aleg[1][n-2]=0;
    int ind;
    for (int i=n-3; i>=3; i--){
        ind=i+3;
        for (int k=i+4; k<=n; k++){
            if (aleg[0][k]>aleg[0][ind])
                ind=k;
        }
        aleg[0][i]=suma[i]+aleg[0][ind];
        aleg[1][i]=aleg[1][ind];
    }
    int i=3, m=0, j=3;
    while (i>=0 && j<=n){
        if (aleg[1][j]==0){
            if (aleg[0][j]>m)
                ind=j;
            i--;
        }
    j++;
    }
    aleg[0][1]=aleg[0][ind]+suma[1];
    aleg[0][2]=aleg[0][ind]+suma[2];
    m=aleg[0][1];
    for (int i=2; i<=n; i++)
        if (aleg[0][i]>m)
            m=aleg[0][i];
    out<<m;
}

int main(){
    citire();
    rez();
    return 0;
}