Cod sursa(job #1617450)

Utilizator GeorgeCalinPetruta George-Calin GeorgeCalin Data 27 februarie 2016 13:58:51
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 2.01 kb
#include <cstdio>
using namespace std;
int v[1002];
int v2[1002];
int main()
{
    int unu,n,ince;
    long long prma,s,sm,prs;
    freopen("expresie.in","r",stdin);
    freopen("expresie.out","w",stdout);
    scanf("%d ",&n);
    prma=0;
    if(n>=4)
    {
        s=0;
        int cor=n;
        int h=1;
        scanf("%d ",&v2[1]);
        v[1]=v2[1];
        for(int i=2;i<=n;i++)
        {
            scanf("%d",&v2[i]);
            v[i]=v2[i];
            if((v[i]*v[i-1]>prma)&&(v[i]*v[i-1]>v[i]+v[i-1]))
            {
                prma=v[i]*v[i-1];
                unu=i;
                h=0;
            }
        }
        s=prma;
        if (h==0)
        {
            for(int i=unu-1;i<=n;i++)
            {
                v[i]=v[i+2];
            }
            n--;
            n--;
        }
        prma=0;
        h=1;
        for(int i=1;i<=n;i++)
        {
            if((v[i]*v[i-1]>prma)&&(v[i]*v[i-1]>v[i]+v[i-1]))
            {
                prma=v[i]*v[i-1];
                unu=i;
                h=0;
            }
        }
        if(h==0)
        {
            for(int i=unu-1;i<=n;i++)
            {
                v[i]=v[i+2];
            }
            n=n-2;
        }
        s=prma+s;
        for(int i=1;i<=n;i++)
        {
            s+=v[i];
        }
        sm=s;
        prs=0;
        s=0;
        for(int i=1;i<=cor;i++)
        {
            if(v2[i]*v2[i+1]*v2[i+2]>prs)
            {
                prs=v2[i]*v2[i+1]*v2[i+2];
                ince=i;
            }
        }
        for(int i=ince;i<=n;i++)
        {
            v2[i]=v2[i+3];
        }
        cor=cor-3;
        s=prs;
        for(int i=1;i<=cor;i++)
        {
            s=s+v2[i];
        }
        if(sm<s)
        {
            sm=s;
        }
    }
    else
    {
        sm=1;
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&v[i]);
            sm*=v[i];
        }
    }
    printf("%lld",sm);
    return 0;
}