Cod sursa(job #879137)

Utilizator deea101Andreea deea101 Data 14 februarie 2013 23:42:40
Problema Oo Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>
#define nmax 100001
#define max(a, b) ((a > b) ? a : b)
using namespace std;
ifstream f("oo.in");
ofstream g("oo.out");
int a[nmax],d1[nmax],d2[nmax],d3[nmax],sol;
int main()
{
    int n,i;
    f>>n;
    for(i=1;i<=n;i++)
        f>>a[i];
    d1[2]=d1[3]=d1[4]=a[1]+a[2];
    d2[3]=d2[4]=d2[5]=a[2]+a[3];
    d3[1]=d3[2]=d3[3]=a[1]+a[n];
    for(i=1;i<=n;i++)
    {
        if(i>4 && i!=n) d1[i]=max(d1[i-1],a[i]+a[i-1]+d1[i-3]);
        if(i>5) d2[i]=max(d2[i-1],a[i]+a[i-1]+d2[i-3]);
        if(i>3 && i<n-1) d3[i]=max(d3[i-1],a[i]+a[i-1]+d3[i-3]);

        if(d1[i]>sol) sol=d1[i];
        if(d2[i]>sol) sol=d2[i];
        if(d3[i]>sol) sol=d3[i];
    }
    g<<sol;
}