Cod sursa(job #3265263)

Utilizator Tudor_CCTudor Cocu Tudor_CC Data 28 decembrie 2024 14:43:13
Problema Oo Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.61 kb
#include <iostream>
#include <fstream>

using namespace std;

int v[100005];

int s1[100005];
int s2[100005];
int s3[100005];
int s4[100005];

int main()
{
    ifstream cin("oo.in");
    ofstream cout("oo.out");
    int n;
    cin>>n;
    for(int i=1;i<=n;++i)
    {
        cin>>v[i];
    }
    int max=0;
    if((v[1]+v[2])>max)
    {
        max=v[1]+v[2];
    }
    if((v[2]+v[3])>max)
    {
        max=v[2]+v[3];
    }
    if((v[1]+v[n])>max)
    {
        max=v[1]+v[n];
    }
    if((v[n]+v[n-1])>max)
    {
        max=v[n]+v[n-1];
    }
    for(int i=5;i<n;++i)
    {
        s1[i]=v[i]+v[i-1]+s1[i-3];
        if(s1[i-1]>s1[i])
        {
            s1[i]=s1[i-1];
        }
        if((s1[i]+v[1]+v[2])>max)
        {
            max=(s1[i]+v[1]+v[2]);
        }
    }
    for(int i=3;i<=(n-3);++i)
    {
        s2[i]=v[i]+v[i-1]+s2[i-3];
        if(s2[i-1]>s2[i])
        {
            s2[i]=s2[i-1];
        }
        //cout<<s2[i]<<" ";
        if((s2[i]+v[n-1]+v[n])>max)
        {
            max=(s2[i]+v[n-1]+v[n]);
        }
    }
    for(int i=4;i<=(n-2);++i)
    {
        s3[i]=v[i]+v[i-1]+s3[i-3];
        if(s3[i-1]>s3[i])
        {
            s3[i]=s3[i-1];
        }
        if((s3[i]+v[1]+v[n])>max)
        {
            max=(s3[i]+v[1]+v[n]);
        }
    }
    for(int i=6;i<=n;++i)
    {
        s4[i]=v[i]+v[i-1]+s4[i-3];
        if(s4[i-1]>s4[i])
        {
            s4[i]=s4[i-1];
        }
        if((s4[i]+v[2]+v[3])>max)
        {
            max=(s4[i]+v[2]+v[3]);
        }
    }
    cout<<max<<" ";
    return 0;
}