Cod sursa(job #1773533)
Utilizator | Rada Robert Gabriel radarobert | Data | 7 octombrie 2016 22:20:16 |
---|---|---|---|
Problema | Twoton | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva ICPC | Marime | 0.59 kb |
#include <fstream>
using namespace std;
int v[1000024];
int dp[1000024];
int mn[1000024];
const int MOD = 19997;
int main()
{
ifstream in("twoton.in");
ofstream out("twoton.out");
int n;
in >> n;
for (int i = 1; i <= n; i++)
in >> v[i];
mn[n+1] = 0x3f3f3f3f;
for (int i = n; i > 0; i--)
mn[i] = min(v[i], mn[i+1]);
for (int i = n-1; i > 0; i--)
{
dp[i] = (1 + dp[i+1]) % MOD;
if (v[i] >= mn[i+1])
dp[i] = (dp[i] * 2) % MOD;
}
out << (dp[1] + 1) % MOD << '\n';
return 0;
}