Pagini recente » Cod sursa (job #178905) | Cod sursa (job #2091901) | Borderou de evaluare (job #2076258) | Cod sursa (job #884215) | Cod sursa (job #2540474)
#include <cstdio>
#include <algorithm>
#include <climits>
using namespace std;
int k = 0;
int v[1000005];
int main()
{
freopen("operatii.in","r",stdin);
freopen("operatii.out","w",stdout);
int n , x;
long long sum = 0;
long long suma = 0;
int pos = -1;
int cnt = 0;
int mi = INT_MAX;
scanf("%d",&n);
for(int i = 1 ; i <= n ; i++)
{
scanf("%d",&x);
if(k == 0)
v[++k] = x;
else if(v[k] != x)
v[++k] = x;
}
for(int i = 1 ; i <= k ; i++)
{
x = v[i];
if(x == 0)
{
if(pos != -1 && mi != INT_MAX){
int lung = i-pos;
sum += (mi+suma-mi*lung);
}
suma = 0;
cnt = 0;
pos = -1;
mi = INT_MAX;
}
else
{
if(pos == -1)
pos = i;
if(mi > x)
{
mi = x;
cnt = 1;
}
else if(mi == x)
cnt++;
suma += x;
}
}
if(pos != -1 && mi != INT_MAX)
{
int lung = k+1-pos;
sum += (mi+suma-mi*lung);
suma = 0;
}
printf("%lld\n",sum);
return 0;
}