Cod sursa(job #1709408)

Utilizator bacenumeavetiUPT BaCeNumeAveti bacenumeaveti Data 28 mai 2016 12:07:46
Problema Twoton Scor 100
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 0.83 kb
#include <fstream>

#define NMAX (1 << 20)
#define MOD 19997

using namespace std;

ifstream fin("twoton.in");
ofstream fout("twoton.out");

int n;
int a[NMAX];
int count = 0;
int DP[NMAX];

int wtf(int i)
{
	count++;
	if(count >= MOD) {
		count -= MOD;
	}

	if(i == n - 1)
		return a[i];
	if(a[i] < wtf(i + 1))
		return a[i];
	else
		return wtf(i + 1);
}

int wtf_optim()
{
	int minim = a[n - 1];
	long long sum = 1;
	DP[n - 1] = 1;

	for(int i = n - 2; i >= 0; i--)
	{
		if(a[i] >= minim)
			DP[i] = sum + 1;
        else
            DP[i] = 1;

		if(minim > a[i])
			minim = a[i];

		sum = (sum + DP[i]) % MOD;
		DP[i] %= MOD;
	}

    fout << sum << "\n";
}

int main()
{
    fin >> n;
    for(int i = 0; i < n; i++)
    	fin >> a[i];
    //wtf(0);
    //fout << count << "\n";
    wtf_optim();

    fin.close();
    fout.close();

    return 0;
}