Cod sursa(job #1709164)

Utilizator UBB_HakunaMatataUBB Cozma Nechita Pop UBB_HakunaMatata Data 28 mai 2016 11:07:49
Problema Twoton Scor 100
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 0.68 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("twoton.in");
ofstream fout("twoton.out");
#define MOD 19997
#define MAX 1000030

int a[MAX], b[MAX], f[MAX];


int main()
{
    int n, i;
    fin >> n;
    for(i = 1 ; i <= n ;i ++)
    {
        fin >> a[i];
    }
    b[n] = a[n];
    for(i = n - 1 ; i >= 1 ; i--)
    {
        b[i] = min(b[i + 1], a[i]);
    }
    f[n] = 1;
    for(i = n - 1 ; i >= 1 ; i--)
    {
        if(a[i] < b[i + 1])
        {
            f[i] = (f[i + 1] + 1);
        }
        else
            f[i] = (2 * f[i + 1] + 1);
        while(f[i] >= MOD)
            f[i] -= MOD;
    }
    fout << f[1] << "\n";
}