Cod sursa(job #2540465)

Utilizator FrostfireMagirescu Tudor Frostfire Data 7 februarie 2020 10:31:37
Problema Operatii Scor 0
Compilator cpp-64 Status done
Runda irim_eralumis Marime 1.26 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#define NMAX 1000000

using namespace std;

ifstream f("operatii.in");
ofstream g("operatii.out");

long long sol;
int n, a[NMAX+10];
pair <int, int> v[NMAX+10];

inline bool mycmp(pair <int, int> a, pair <int, int> b)
{   return a.first > b.first;
}

int main()
{
    f >> n;
    for(int i=1; i<=n; i++)
        {   f >> a[i];
            v[i].first = a[i];
            v[i].second = i;
        }
    sort(v+1, v+n+1, mycmp);

    for(int i=1; i<=n; i++)
        {   int poz = v[i].second;
            if(a[poz])
                {   sol += (long long)v[i].first;
                    int poz1 = poz - 1, ok = 1;
                    while(poz1 >= 1 && ok)
                        {   if(a[poz1] < a[poz]) ok = 0;
                            a[poz1] = 0;
                            poz1--;
                        }
                    poz1 = poz + 1;
                    ok = 1;
                    while(poz1 <= n && ok)
                        {   if(a[poz1] < a[poz]) ok = 0;
                            a[poz1] = 0;
                            poz1++;
                        }
                    a[poz] = 0;
                }
        }
    g << sol << '\n';
    return 0;
}