Cod sursa(job #1712088)

Utilizator CTI_KnightCir Constantin CTI_Knight Data 1 iunie 2016 23:20:33
Problema Twoton Scor 100
Compilator cpp Status done
Runda Arhiva ICPC Marime 1.03 kb
# include <fstream>
# include <algorithm>
# include <vector>
# define mod 19997

using namespace std;

ifstream f ( "twoton.in" );
ofstream g ( "twoton.out" );

int main()
{
    int n; f >> n;
    //  Retinem in doi vectori a, val; numarul de pasi pe care in face functia apelata
    // respectiv valoarea returnata de fuctie apelata cu ( i );
    vector < int > v( n ), a( n ), val( n );
    for ( int i = 0; i < n; ++ i ) {
        f >> v[i];
    }

    a[n - 1] = 1;       // ultimul element face un pas
    val[n - 1] = v[n - 1];      // pentru ultimul element functia va returna valoare sa

    for ( int i = n - 2; i >= 0; -- i ) {
        a[i] = ( a[i + 1] + 1 ) % mod;    // functia face cu un pas mai mult decat pentru elementul
        // care se afla dupa el
        if ( v[i] < val[i + 1] ) {
            val[i] = v[i];      // functia se opreste
        }
        else {
            a[i] = ( a[i] + a[i + 1] ) % mod;
            val[i] = val[i + 1];
        }
    }

    g << a[0] % mod;

    return 0;
}