166352025-05-07 17:19:16algoproMaximum felosztáscpp17Futási hiba 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms500 KiB
2Elfogadva28ms12852 KiB
subtask210/10
3Elfogadva4ms2600 KiB
4Elfogadva4ms2568 KiB
5Elfogadva4ms2356 KiB
6Elfogadva4ms2356 KiB
7Elfogadva2ms820 KiB
8Elfogadva3ms2100 KiB
subtask315/15
9Elfogadva4ms2868 KiB
10Elfogadva4ms2436 KiB
11Elfogadva4ms2704 KiB
12Elfogadva4ms2612 KiB
13Elfogadva3ms2100 KiB
14Elfogadva3ms2100 KiB
15Elfogadva4ms2356 KiB
16Elfogadva10ms3060 KiB
17Elfogadva3ms1260 KiB
18Elfogadva4ms2700 KiB
subtask415/15
19Elfogadva28ms12304 KiB
20Elfogadva28ms12740 KiB
21Elfogadva25ms9524 KiB
22Elfogadva24ms8504 KiB
23Elfogadva24ms8364 KiB
24Elfogadva23ms8500 KiB
25Elfogadva19ms11064 KiB
26Elfogadva14ms12084 KiB
27Elfogadva282ms20292 KiB
28Elfogadva20ms6392 KiB
29Elfogadva25ms8644 KiB
30Elfogadva24ms8260 KiB
31Elfogadva29ms9880 KiB
32Elfogadva23ms7988 KiB
33Elfogadva118ms14188 KiB
34Elfogadva25ms8384 KiB
35Elfogadva96ms12336 KiB
36Elfogadva10ms3200 KiB
37Elfogadva26ms9268 KiB
38Elfogadva25ms8244 KiB
subtask50/60
39Futási hiba2ms508 KiB
40Futási hiba2ms316 KiB
41Futási hiba2ms564 KiB
42Futási hiba2ms564 KiB
43Futási hiba2ms500 KiB
44Futási hiba2ms564 KiB
45Futási hiba1ms444 KiB
46Futási hiba1ms316 KiB
47Futási hiba1ms316 KiB
48Futási hiba1ms316 KiB
49Futási hiba2ms508 KiB
50Futási hiba1ms316 KiB
51Futási hiba1ms316 KiB
52Futási hiba1ms316 KiB
53Futási hiba1ms508 KiB
54Futási hiba1ms316 KiB
55Futási hiba2ms512 KiB
56Futási hiba2ms448 KiB
57Futási hiba1ms316 KiB
58Futási hiba1ms316 KiB
59Futási hiba3ms568 KiB
60Futási hiba1ms316 KiB
61Futási hiba2ms444 KiB
62Futási hiba1ms316 KiB
63Futási hiba3ms564 KiB
64Futási hiba1ms316 KiB
65Futási hiba3ms564 KiB
66Futási hiba1ms316 KiB
67Futási hiba3ms564 KiB
68Futási hiba1ms316 KiB
69Futási hiba3ms564 KiB
70Futási hiba1ms316 KiB
71Futási hiba30ms12472 KiB