Cod sursa(job #1753186)

Utilizator andrei_toaderToader Andrei Sorin andrei_toader Data 6 septembrie 2016 00:17:41
Problema Twoton Scor 100
Compilator cpp Status done
Runda Arhiva ICPC Marime 0.7 kb
#include <cstdio>
#include <cmath>
#include <algorithm>

using namespace std;

int n;
int a[100005],minim[100005],sol[100005];

int main()
{
    freopen("twoton.in","r",stdin);
    freopen("twoton.out","w",stdout);
    scanf("%d",&n);
    for (int i = 0; i < n ; i++) scanf("%d",&a[i]);
    minim[n-1] = a[n-1];
    for (int i = n-2; i>=0; i--)
    {
        minim[i] = min(a[i],minim[i+1]);
    }

    sol[n-1] = 1;
    for (int i = n-2; i>=0; i--)
    {
        if (a[i] == minim[i])
        {
            sol[i] = (1+sol[i+1]) % 19997;
        }
        else
        {
            sol[i] = (1+2*sol[i+1]) % 19997;
        }
    }

    printf("%d",sol[0]);
    return 0;
}