| 16653 | 2025-05-07 18:22:58 | algopro | Maximum felosztás | cpp17 | Time limit exceeded 40/100 | 1.093s | 75424 KiB |
// UUID: 8402b3bd-584d-4d49-88ca-e88ea36885db
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int MAXN = 100'001;
const ll INF = 1e15;
const ll MOD = 1e9+7;
ll a[MAXN], b[MAXN];
vector<pair<ll, ll>> pref[MAXN];
map<ll, ll> value_to_bidx;
void solve() {
int n, m; cin >> n >> m;
a[0] = INF;
for (int i = 1; i <= n; i++) cin >> a[i];
for (int i = 1; i <= m; i++) cin >> b[i];
for (int i = 1; i <= m; i++) {
value_to_bidx[b[i]] = i;
}
vector<int> st;
st.emplace_back(0);
pref[0].emplace_back(0, 1);
for (int i = 1; i <= m; i++) {
pref[i].emplace_back(0, 0);
}
for (int i = 1; i <= n; i++) {
vector<ll> dp(m+1);
while (!st.empty() && a[st.back()] <= a[i]) st.pop_back();
st.emplace_back(i);
for (int j = st.size()-1; j >= 1; j--) {
if (value_to_bidx.count(a[st[j]])) {
ll idx = value_to_bidx[a[st[j]]];
ll l = st[j-1]+1, r = st[j];
auto it1 = upper_bound(pref[idx-1].begin(), pref[idx-1].end(), make_pair(r-1, INF));
auto it2 = lower_bound(pref[idx-1].begin(), pref[idx-1].end(), make_pair(l-1, 0ll));
ll val1 = 0;
ll val2 = 0;
if (it1 != pref[idx-1].begin()) {
it1--;
val1 = it1->second;
}
if (it2 != pref[idx-1].begin()) {
it2--;
val2 = it2->second;
}
ll res = val1 - val2;
res %= MOD;
if (i == n && idx == m) {
cout << res << "\n";
return;
} else {
pref[idx].emplace_back(i, pref[idx].back().second + res);
}
}
}
}
cout << "0\n";
}
int main() {
ios::sync_with_stdio(0); cin.tie(0);
int t = 1;
// cin >> t;
while (t--) solve();
return 0;
}| Subtask | Sum | Test | Verdict | Time | Memory | ||
|---|---|---|---|---|---|---|---|
| subtask1 | 0/0 | ||||||
| 1 | Accepted | 3ms | 2612 KiB | ||||
| 2 | Accepted | 6ms | 3128 KiB | ||||
| subtask2 | 10/10 | ||||||
| 3 | Accepted | 3ms | 2612 KiB | ||||
| 4 | Accepted | 3ms | 2612 KiB | ||||
| 5 | Accepted | 3ms | 2612 KiB | ||||
| 6 | Accepted | 3ms | 2612 KiB | ||||
| 7 | Accepted | 3ms | 2612 KiB | ||||
| 8 | Accepted | 3ms | 2612 KiB | ||||
| subtask3 | 15/15 | ||||||
| 9 | Accepted | 3ms | 2868 KiB | ||||
| 10 | Accepted | 3ms | 2612 KiB | ||||
| 11 | Accepted | 3ms | 2868 KiB | ||||
| 12 | Accepted | 4ms | 2868 KiB | ||||
| 13 | Accepted | 3ms | 2612 KiB | ||||
| 14 | Accepted | 3ms | 2612 KiB | ||||
| 15 | Accepted | 4ms | 2612 KiB | ||||
| 16 | Accepted | 18ms | 4660 KiB | ||||
| 17 | Accepted | 3ms | 2804 KiB | ||||
| 18 | Accepted | 8ms | 3608 KiB | ||||
| subtask4 | 15/15 | ||||||
| 19 | Accepted | 6ms | 3176 KiB | ||||
| 20 | Accepted | 6ms | 3124 KiB | ||||
| 21 | Accepted | 4ms | 2872 KiB | ||||
| 22 | Accepted | 4ms | 2868 KiB | ||||
| 23 | Accepted | 4ms | 2832 KiB | ||||
| 24 | Accepted | 4ms | 2784 KiB | ||||
| 25 | Accepted | 6ms | 2900 KiB | ||||
| 26 | Accepted | 4ms | 2868 KiB | ||||
| 27 | Accepted | 421ms | 32092 KiB | ||||
| 28 | Accepted | 6ms | 2900 KiB | ||||
| 29 | Accepted | 6ms | 3020 KiB | ||||
| 30 | Accepted | 4ms | 2612 KiB | ||||
| 31 | Accepted | 43ms | 6628 KiB | ||||
| 32 | Accepted | 4ms | 2868 KiB | ||||
| 33 | Accepted | 182ms | 17104 KiB | ||||
| 34 | Accepted | 4ms | 2744 KiB | ||||
| 35 | Accepted | 149ms | 12340 KiB | ||||
| 36 | Accepted | 4ms | 2868 KiB | ||||
| 37 | Accepted | 19ms | 5100 KiB | ||||
| 38 | Accepted | 4ms | 2868 KiB | ||||
| subtask5 | 0/60 | ||||||
| 39 | Time limit exceeded | 1.085s | 22760 KiB | ||||
| 40 | Accepted | 488ms | 34964 KiB | ||||
| 41 | Accepted | 560ms | 40588 KiB | ||||
| 42 | Accepted | 402ms | 43372 KiB | ||||
| 43 | Accepted | 395ms | 42128 KiB | ||||
| 44 | Accepted | 287ms | 19104 KiB | ||||
| 45 | Accepted | 173ms | 29712 KiB | ||||
| 46 | Accepted | 987ms | 33260 KiB | ||||
| 47 | Accepted | 949ms | 30044 KiB | ||||
| 48 | Time limit exceeded | 1.021s | 38428 KiB | ||||
| 49 | Time limit exceeded | 1.085s | 33516 KiB | ||||
| 50 | Accepted | 995ms | 40152 KiB | ||||
| 51 | Accepted | 119ms | 21912 KiB | ||||
| 52 | Accepted | 74ms | 12492 KiB | ||||
| 53 | Accepted | 70ms | 11028 KiB | ||||
| 54 | Accepted | 59ms | 12136 KiB | ||||
| 55 | Accepted | 54ms | 8772 KiB | ||||
| 56 | Accepted | 838ms | 19208 KiB | ||||
| 57 | Accepted | 903ms | 22116 KiB | ||||
| 58 | Time limit exceeded | 1.093s | 48988 KiB | ||||
| 59 | Accepted | 685ms | 7784 KiB | ||||
| 60 | Time limit exceeded | 1.085s | 75424 KiB | ||||
| 61 | Accepted | 32ms | 5172 KiB | ||||
| 62 | Time limit exceeded | 1.087s | 63312 KiB | ||||
| 63 | Accepted | 814ms | 10008 KiB | ||||
| 64 | Time limit exceeded | 1.083s | 53344 KiB | ||||
| 65 | Accepted | 720ms | 10292 KiB | ||||
| 66 | Time limit exceeded | 1.093s | 65728 KiB | ||||
| 67 | Accepted | 730ms | 8036 KiB | ||||
| 68 | Time limit exceeded | 1.085s | 63580 KiB | ||||
| 69 | Accepted | 740ms | 8804 KiB | ||||
| 70 | Time limit exceeded | 1.092s | 58732 KiB | ||||
| 71 | Accepted | 196ms | 10036 KiB | ||||