Cod sursa(job #2516415)

Utilizator betybety bety bety Data 31 decembrie 2019 13:44:15
Problema Oo Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.53 kb
#include <fstream>
#define inf 999
using namespace std;
ifstream in("oo.in");
ofstream out("oo.out");
const int lim=1e5+3;
int w[lim],v[lim];
bool restrictie[lim];
int main()
{
    ios_base::sync_with_stdio(false);
    in.tie(0),out.tie(0);
    int n,maxx=-1,ind;
    in>>n;
    for(int i=0;i<n;++i)
        in>>w[i];
    w[n]=w[0];
    for(int i=0;i<n;++i)
        if(w[i]+w[i+1]>maxx)
        maxx=w[i]+w[i+1],ind=i;
    int nr=-1;
    for(int i=ind;i<n;++i)
        ++nr,v[nr]=w[i];
    for(int i=0;i<=ind-1;++i)
        ++nr,v[nr]=w[i];
    int sumaa;
    sumaa=v[0]+v[1];
    restrictie[n-1]=restrictie[0]=restrictie[1]=restrictie[2]=1;
    for(int i=2;i<n;++i)
    if(restrictie[i]==0)
    {
        int sum1=v[i%n]+v[(i+1)%n];
        if(restrictie[i%n]==1 or restrictie[(i+1)%n]==1)
            sum1=-inf;
        int sum2=v[(i+1)%n]+v[(i+2)%n];
        if(restrictie[(i+1)%n]==1 or restrictie[(i+2)%n]==1)
            sum2=-inf;
        int sum3=v[(i+2)%n]+v[(i+3)%n];
        if(restrictie[(i+2)%n]==1 or restrictie[(i+32)%n]==1)
            sum3=-inf;
        int sum=max(sum1,max(sum2,sum3));
        if(sum!=-inf)
        {
            if(sum1==sum)
                sumaa+=sum,restrictie[i%n]=restrictie[(i+1)%n]=restrictie[(i+2)%n]=1;
            else if(sum2==sum)
                sumaa+=sum,restrictie[(i+1)%n]=restrictie[(i+2)%n]=restrictie[(i+3)%n]=1;
            else sumaa+=sum,restrictie[(i+2)%n]=restrictie[(i+3)%n]=restrictie[(i+4)%n]=1;
        }
    }
    out<<sumaa;
    return 0;
}