Pagini recente » Cod sursa (job #1750015) | Cod sursa (job #2195647) | Cod sursa (job #1075236) | Cod sursa (job #1902422) | Cod sursa (job #2540459)
#include <cstdio>
#include <algorithm>
#include <vector>
#include <climits>
using namespace std;
int v[1000005];
int k = 0;
int dif[1000005];
int main()
{
freopen("operatii.in","r",stdin);
freopen("operatii.out","w",stdout);
int n , x , ma = 0;
long long sum = 0;
scanf("%d",&n);
for(int i = 1 ; i <= n ; i++)
{
scanf("%d",&x);
if(k == 0)
{
v[++k] = x;
continue;
}
if(v[k] != x)
v[++k] = x;
}
int pos = -1;
int mi = INT_MAX;
for(int i = 1 ; i <= k ; i++)
{
if(v[i] == 0)
{
if(mi != INT_MAX && pos != -1)
{
dif[pos]+=mi;
dif[i]-=mi;
sum += mi;
}
pos = -1;
mi = INT_MAX;
}
else
{
if(pos == -1)
pos = i;
mi = min(mi,v[i]);
}
}
if(mi != INT_MAX && pos != -1)
{
dif[pos]+=mi;
sum += mi;
}
for(int i = 1 ; i <= k ; i++)
dif[i] += dif[i-1];
for(int i = 1 ; i <= k ; i++)
sum += 1ll*(v[i]-dif[i]);
printf("%lld\n",sum);
return 0;
}