Cod sursa(job #2526579)

Utilizator eli_2003Maria-Elisabeta Mihai eli_2003 Data 18 ianuarie 2020 20:24:22
Problema Oo Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("oo.in");
ofstream g("oo.out");

int n, a[100001], maxi, p, nr;
bool viz[100001];

int maxim()
{
    int m=0;
    for(int i=1;i<=n;i++)
        if(m<a[i] && viz[i]==0)
        {
            m=a[i];
            p=i;
        }
    viz[p]=1;
    return m;
}

bool gata()
{
    for(int i=1;i<n;i++)
        if(viz[i]==0 && viz[i+1]==0)
            return 1;
    return 0;
}

void viziteaza4(int l)
{
    int cnt=4;
    while(l<=n && cnt!=0)
    {
        viz[l]=1;
        l++;
        cnt--;
    }
    while(cnt!=0)
    {
        viz[cnt]=1;
        cnt--;
    }
}

int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    while(gata())
    {
        maxi=maxim();
        nr=nr+maxi;
        if(viz[p]==0)
        {
            if(a[p-1]>a[p+1] && viz[p-1]==0)
            {
                nr=nr+a[p-1];
                viziteaza4(p-2);
            }
            else if(viz[p+1]==0)
            {
                nr=nr+a[p+1];
                viziteaza4(p-1);
            }
        }
    }
    cout<<nr;
    return 0;
}