Pagini recente » Cod sursa (job #2987) | Cod sursa (job #832052) | Cod sursa (job #3273668) | Cod sursa (job #3259745) | Cod sursa (job #1709066)
#include <fstream>
#include <algorithm>
using namespace std;
const int NMAX = 1000024;
int n;
int a[NMAX];
int b[NMAX];
const int MOD = 19997;
bool memo[NMAX];
int dp[NMAX];
int wtf(int i) {
if (i == n - 1)
return 1;
if (memo[i])
return dp[i];
memo[i] = true;
dp[i] = 1;
if (b[i] < a[i + 1]) {
dp[i] += wtf(i + 1);
if (dp[i] >= MOD)
dp[i] -= MOD;
}
else {
dp[i] += 2 * wtf(i + 1);
while (dp[i] >= MOD)
dp[i] -= MOD;
}
return dp[i];
}
int main()
{
ifstream cin("twoton.in");
ofstream cout("twoton.out");
cin >> n;
for (int i = 0; i < n; ++ i) {
cin >> a[i];
b[i] = a[i];
}
for (int i = n - 2; i >= 0; -- i)
a[i] = min(a[i], a[i + 1]);
//for (int i = 0; i < n; ++ i)
// cout << a[i] << ' ';
//cout << endl;
cout << wtf(0) << '\n';
cin.close();
cout.close();
return 0;
}