Submission #973057

#TimeUsernameProblemLanguageResultExecution timeMemory
973057TAhmed33Žarulje (COI15_zarulje)C++98
0 / 100
1065 ms149596 KiB
#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
int add (int a, int b) {
	a += b; if (a >= MOD) a -= MOD;
	return a;
}
int n, k, a[200001];
map <pair <int, int>, int> dp;
int ans (int l, int r) {
	if (l == 1 || r == n) {
		return 1;
	}
	if (dp.count({l, r})) return dp[{l, r}];
	int sum = 0;
	int x = max(a[l - 1], a[r + 1]);
	if (a[l - 1] == x) sum = add(sum, ans(l - 1, r));
	if (a[r + 1] == x) sum = add(sum, ans(l, r + 1));
	return dp[{l, r}] = sum;
}
void solve () {
	cin >> n >> k;
	for (int i = 1; i <= n; i++) {
		cin >> a[i];
	}
	while (k--) {
		int x; cin >> x;
		dp.clear();
		cout << ans(x, x) << '\n';
	}
}
signed main () {
	ios::sync_with_stdio(0); cin.tie(0);
	int t = 1; //cin >> t;
	while (t--) solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...