Cod sursa(job #2540474)

Utilizator ardutgamerAndrei Bancila ardutgamer Data 7 februarie 2020 10:56:35
Problema Operatii Scor 0
Compilator cpp-64 Status done
Runda irim_eralumis Marime 1.29 kb
#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;
}