Cod sursa(job #2455943)

Utilizator alex_HarryBabalau Alexandru alex_Harry Data 13 septembrie 2019 10:03:11
Problema Twoton Scor 100
Compilator cpp-64 Status done
Runda Arhiva ICPC Marime 0.72 kb
#include <fstream>
using namespace std;
ifstream f("twoton.in");
ofstream g("twoton.out");
int N;
const int MOD = 19997;
int A[100005], Min[100005], Cnt[100005];
void Read(){
    f >> N;
    for(int i = 1; i <= N; i++)
        f >> A[i];
}

void precalcMin(){
    Min[N] = A[N];
    for(int i = N - 1; i >= 1; i--)
        Min[i] = min(Min[i + 1], A[i]);
}

void Solve(){
    Cnt[N] = 1;
    for(int i = N - 1; i >= 1; i--){
        Cnt[i] = Cnt[i + 1] + 1;
        if(A[i] >= Min[i + 1]){
            Cnt[i] += Cnt[i + 1];
            if(Cnt[i] >= MOD)
                Cnt[i] -= MOD;
        }
    }
    g << Cnt[1] << '\n';
}
int main()
{
    Read();
    precalcMin();
    Solve();
    return 0;
}