12852022-03-30 09:41:50Valaki2Maximum felosztáscpp14Futási hiba 40/1001.077s497700 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define pb push_back
#define mp make_pair
#define fi first
#define se second

const int mod = 1e9 + 7;
const int maxn = 1e5;

void solve() {
    int n, m;
    cin >> n >> m;
    // mistaking n, m ?
    vector<int> a(1 + n, 0);
    vector<int> b(1 + m, 0);
    vector<int> v(1, 0);
    for(int i = 1; i <= n; i++) {
        cin >> a[i];
        v.pb(a[i]);
    }
    for(int i = 1; i <= m; i++) {
        cin >> b[i];
        v.pb(b[i]);
    }
    sort(v.begin(), v.end());
    v.resize(unique(v.begin(), v.end()) - v.begin());
    for(int i = 1; i <= n; i++) {
        a[i] = (int) (lower_bound(v.begin(), v.end(), a[i]) - v.begin());
    }
    for(int i = 1; i <= m; i++) {
        b[i] = (int) (lower_bound(v.begin(), v.end(), b[i]) - v.begin());
    }
    // all elements between 1 and n+m<=2e5
    /*for(int i = 1; i <= n; i++) {
        cout << a[i] << " ";
    }
    cout << "\n";
    for(int i = 1; i <= m; i++) {
        cout << b[i] << " ";
    }
    cout << "\n";*/
    vector<vector<pair<int, int> > > intervals(1 + 2 * maxn);
    for(int l = 1; l <= n; l++) {
        int maxi = 0;
        for(int r = l; r <= n; r++) {
            maxi = max(maxi, a[r]);
            intervals[maxi].pb(mp(l, r));
        }
    }
    vector<int> dp;
    dp.assign(1 + n, 0);
    dp[0] = 1;
    for(int i = 1; i <= m; i++) {
        vector<int> new_dp(1 + n, 0);
        for(pair<int, int> p : intervals[b[i]]) {
            new_dp[p.se] = (new_dp[p.se] + dp[p.fi - 1]) % mod;
        }
        dp = new_dp;
    }
    cout << dp[n] << "\n";
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    solve();
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva7ms11000 KiB
2Elfogadva81ms83348 KiB
subtask210/10
3Elfogadva9ms16204 KiB
4Elfogadva9ms15832 KiB
5Elfogadva9ms15984 KiB
6Elfogadva8ms15716 KiB
7Elfogadva9ms15708 KiB
8Elfogadva8ms15584 KiB
subtask315/15
9Elfogadva9ms16412 KiB
10Elfogadva8ms15604 KiB
11Elfogadva10ms15996 KiB
12Elfogadva10ms16136 KiB
13Elfogadva10ms15688 KiB
14Elfogadva8ms15776 KiB
15Elfogadva10ms16792 KiB
16Elfogadva8ms16488 KiB
17Elfogadva9ms16628 KiB
18Elfogadva8ms16324 KiB
subtask415/15
19Elfogadva90ms91648 KiB
20Elfogadva85ms109772 KiB
21Elfogadva75ms96996 KiB
22Elfogadva82ms96804 KiB
23Elfogadva101ms101692 KiB
24Elfogadva79ms84900 KiB
25Elfogadva68ms86732 KiB
26Elfogadva65ms80580 KiB
27Elfogadva59ms88708 KiB
28Elfogadva150ms91596 KiB
29Elfogadva57ms77388 KiB
30Elfogadva82ms83288 KiB
31Elfogadva54ms80664 KiB
32Elfogadva98ms87832 KiB
33Elfogadva59ms82560 KiB
34Elfogadva107ms89896 KiB
35Elfogadva54ms84088 KiB
36Elfogadva116ms90992 KiB
37Elfogadva57ms80388 KiB
38Elfogadva86ms89392 KiB
subtask50/60
39Futási hiba426ms322032 KiB
40Futási hiba414ms384804 KiB
41Időlimit túllépés367ms190440 KiB
42Időlimit túllépés458ms208360 KiB
43Futási hiba298ms333632 KiB
44Időlimit túllépés363ms178048 KiB
45Futási hiba363ms330372 KiB
46Futási hiba337ms319856 KiB
47Időlimit túllépés446ms215864 KiB
48Időlimit túllépés449ms198900 KiB
49Futási hiba340ms340616 KiB
50Futási hiba314ms298048 KiB
51Időlimit túllépés400ms204028 KiB
52Időlimit túllépés437ms209568 KiB
53Időlimit túllépés402ms201276 KiB
54Futási hiba375ms449204 KiB
55Időlimit túllépés354ms201144 KiB
56Időlimit túllépés518ms224656 KiB
57Időlimit túllépés411ms223912 KiB
58Időlimit túllépés375ms205136 KiB
59Időlimit túllépés1.026s198588 KiB
60Futási hiba282ms278040 KiB
61Időlimit túllépés398ms230896 KiB
62Futási hiba294ms398780 KiB
63Futási hiba898ms497556 KiB
64Időlimit túllépés293ms213064 KiB
65Futási hiba917ms497700 KiB
66Futási hiba312ms407020 KiB
67Időlimit túllépés1.047s216184 KiB
68Futási hiba314ms393484 KiB
69Időlimit túllépés1.077s228940 KiB
70Futási hiba356ms328544 KiB
71Időlimit túllépés819ms231040 KiB