Cod sursa(job #1969448)

Utilizator akaprosAna Kapros akapros Data 18 aprilie 2017 14:29:39
Problema Operatii Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <bits/stdc++.h>
#define maxN 1000002
#define inf 2000000000
using namespace std;

FILE *fin = freopen("operatii.in", "r", stdin);
FILE *fout = freopen("operatii.out", "w", stdout);

/* ================== */
int n, v[maxN];
/* ================== */
int ans;
/* ================== */

void brut(int l, int r, int prv)
{
    int minv = inf;
    for (int i = l; i <= r; ++ i)
        if (v[i] < minv)
            minv = v[i];
    ans += minv - prv;
    for (int i = l; i <= r; ++ i)
        if (v[i] != minv)
        {
            int j = i + 1;
            while (j <= r && v[j] != minv)
                ++ j;
            if (i < j)
                brut(i, j - 1, minv);
            i = j - 1;
        }
}

int main()
{
    scanf("%d", &n);
    for (int i = 1; i <= n; ++ i)
        scanf("%d", &v[i]);
    for (int i = 1; i <= n; ++ i)
        if (!v[i])
        {
            int j = i + 1;
            while (j <= n && v[j] != 0)
                ++ j;
            if (i + 1 < j)
                brut(i + 1, j - 1, 0);
            i = j - 1;
        }

    printf("%d\n", ans);
    //printf("%d\n", ans);
    return 0;
}