166352025-05-07 17:19:16algoproMaximum felosztáscpp17Runtime error 40/100282ms20292 KiB
// UUID: 60450dd8-3471-4fbd-9ec5-5a2b13e5aec9
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

const int MAXN = 2001;
const ll INF = 1e15;
const ll MOD = 1e9+7;

ll a[MAXN], b[MAXN], dp[MAXN][MAXN];
map<ll, int> 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);
    dp[0][0] = 1;
    for (int i = 1; i <= n; i++) {

        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]])) {
                int idx = value_to_bidx[a[st[j]]];

                int l = st[j-1]+1, r = st[j];
                for (int k = l; k <= r; k++) {
                    dp[i][idx] += dp[k-1][idx-1];
                    dp[i][idx] %= MOD;
                }
            }
        }
    }
    cout << dp[n][m] << "\n";
}

int main() {
    ios::sync_with_stdio(0); cin.tie(0);
    int t = 1; 
    // cin >> t;
    while (t--) solve();
    return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms500 KiB
2Accepted28ms12852 KiB
subtask210/10
3Accepted4ms2600 KiB
4Accepted4ms2568 KiB
5Accepted4ms2356 KiB
6Accepted4ms2356 KiB
7Accepted2ms820 KiB
8Accepted3ms2100 KiB
subtask315/15
9Accepted4ms2868 KiB
10Accepted4ms2436 KiB
11Accepted4ms2704 KiB
12Accepted4ms2612 KiB
13Accepted3ms2100 KiB
14Accepted3ms2100 KiB
15Accepted4ms2356 KiB
16Accepted10ms3060 KiB
17Accepted3ms1260 KiB
18Accepted4ms2700 KiB
subtask415/15
19Accepted28ms12304 KiB
20Accepted28ms12740 KiB
21Accepted25ms9524 KiB
22Accepted24ms8504 KiB
23Accepted24ms8364 KiB
24Accepted23ms8500 KiB
25Accepted19ms11064 KiB
26Accepted14ms12084 KiB
27Accepted282ms20292 KiB
28Accepted20ms6392 KiB
29Accepted25ms8644 KiB
30Accepted24ms8260 KiB
31Accepted29ms9880 KiB
32Accepted23ms7988 KiB
33Accepted118ms14188 KiB
34Accepted25ms8384 KiB
35Accepted96ms12336 KiB
36Accepted10ms3200 KiB
37Accepted26ms9268 KiB
38Accepted25ms8244 KiB
subtask50/60
39Runtime error2ms508 KiB
40Runtime error2ms316 KiB
41Runtime error2ms564 KiB
42Runtime error2ms564 KiB
43Runtime error2ms500 KiB
44Runtime error2ms564 KiB
45Runtime error1ms444 KiB
46Runtime error1ms316 KiB
47Runtime error1ms316 KiB
48Runtime error1ms316 KiB
49Runtime error2ms508 KiB
50Runtime error1ms316 KiB
51Runtime error1ms316 KiB
52Runtime error1ms316 KiB
53Runtime error1ms508 KiB
54Runtime error1ms316 KiB
55Runtime error2ms512 KiB
56Runtime error2ms448 KiB
57Runtime error1ms316 KiB
58Runtime error1ms316 KiB
59Runtime error3ms568 KiB
60Runtime error1ms316 KiB
61Runtime error2ms444 KiB
62Runtime error1ms316 KiB
63Runtime error3ms564 KiB
64Runtime error1ms316 KiB
65Runtime error3ms564 KiB
66Runtime error1ms316 KiB
67Runtime error3ms564 KiB
68Runtime error1ms316 KiB
69Runtime error3ms564 KiB
70Runtime error1ms316 KiB
71Runtime error30ms12472 KiB