Cod sursa(job #3366178)

Utilizator IzabelaJePloscaru Maria Izabela IzabelaJe Data 29 septembrie 2026 18:49:55
Problema Oo Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");
int v[100001],n,s[100001];
int cazul1(int n){   //de la 1,2
    s[1]=0;
    s[2]=v[1]+v[2];
    for(int i=3;i<=n-1;i++)
        s[i]=max(s[i-1],s[i-3]+v[i-1]+v[i]);
    return s[n-1];
}
int cazul2(int n){   //de la n,1
    s[1]=0;
    s[2]=0;
    s[3]=0;
    for(int i=4;i<=n-2;i++)
        s[i]=max(s[i-1],s[i-3]+v[i-1]+v[i]);
    return s[n-2]+v[n]+v[1];
}
int cazul3(int n){   //de la 2...n (fara sectorul 1)
    s[1]=0;
    s[2]=0;
    for(int i=3;i<=n;i++)
        s[i]=max(s[i-1],s[i-3]+v[i-1]+v[i]);
    return s[n];
}
int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)
        fin>>v[i];
    if(n==2){
        fout<<v[1]+v[2];
        return 0;
    }
    if(n==3){
        fout<<max(v[1]+v[2],max(v[2]+v[3],v[3]+v[1]));
        return 0;
    }
    int maxim=-1;
    maxim=max(maxim,cazul1(n));
    maxim=max(maxim,cazul2(n));
    maxim=max(maxim,cazul3(n));
    fout<<maxim;
    return 0;
}