Pagini recente » Cod sursa (job #3144551) | Cod sursa (job #1548330) | Cod sursa (job #2405409) | Cod sursa (job #842551) | Cod sursa (job #2540465)
#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;
}