162232025-04-14 18:06:48gortomiNövekvő Ödön és a Másoló Varázslócpp17Hibás válasz 0/100224ms15240 KiB
#include <bits/stdc++.h>
using namespace std;
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    const int inf = 1e9 + 5;
    int n, m;
    cin >> n >> m;
    vector<int> a(n + 2), b(m);
    for(int i = 1; i <= n; i++) cin >> a[i];
    a[n + 1] = inf;
    for(int j = 0; j < m; j++) cin >> b[j];
    sort(b.begin(), b.end());
    vector<int> dp(n + 2);
    set<array<int, 3> > s;
    s.insert({0, 0});
    for(int i = 1; i <= n + 1; i++)
    {
        int ind = lower_bound(b.begin(), b.end(), a[i]) - b.begin();
        int val = a[i] - i + 1;
        auto it = s.lower_bound({val, a[i], -inf});
        if(it == s.begin())
        {
            dp[i] = n + 1;
            continue;
        }
        it--;
        dp[i] = (*it)[2] + i - 1;
        //cout << i << " " << dp[i] << " " << val << " " << it -> first << " " << it -> second << "\n";
        int ins = a[i] - i, ival = dp[i] - i;
        while(1)
        {
            auto it2 = s.lower_bound({ins, a[i], -inf});
            if(it2 != s.end() && (*it2)[2] >= ival) s.erase(it2);
            else break;
        }
        s.insert({ins, a[i], ival});

    }
    cout << dp[n + 1] << "\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Hibás válasz41ms2872 KiB
subtask20/5
3Elfogadva48ms1076 KiB
4Elfogadva48ms1076 KiB
5Hibás válasz48ms1076 KiB
subtask30/10
6Hibás válasz1ms316 KiB
7Hibás válasz1ms508 KiB
8Hibás válasz1ms316 KiB
subtask40/15
9Hibás válasz1ms320 KiB
10Hibás válasz1ms316 KiB
11Hibás válasz1ms316 KiB
12Hibás válasz1ms388 KiB
subtask50/5
13Hibás válasz4ms504 KiB
14Hibás válasz4ms316 KiB
15Hibás válasz4ms316 KiB
subtask60/5
16Hibás válasz4ms316 KiB
17Hibás válasz4ms564 KiB
18Hibás válasz4ms564 KiB
19Hibás válasz4ms316 KiB
subtask70/10
20Hibás válasz4ms564 KiB
21Hibás válasz4ms564 KiB
22Hibás válasz4ms316 KiB
23Hibás válasz3ms620 KiB
24Hibás válasz4ms548 KiB
subtask80/25
25Hibás válasz46ms1476 KiB
26Elfogadva46ms1476 KiB
27Elfogadva46ms1476 KiB
28Elfogadva1ms500 KiB
29Hibás válasz82ms1588 KiB
30Hibás válasz109ms7732 KiB
31Hibás válasz103ms7624 KiB
32Hibás válasz93ms7732 KiB
33Hibás válasz85ms6920 KiB
34Hibás válasz86ms7104 KiB
35Hibás válasz85ms6708 KiB
36Hibás válasz104ms7732 KiB
37Hibás válasz90ms7624 KiB
38Hibás válasz83ms6708 KiB
39Hibás válasz82ms1472 KiB
40Hibás válasz59ms1476 KiB
41Hibás válasz83ms6396 KiB
42Hibás válasz52ms4148 KiB
43Hibás válasz108ms7732 KiB
44Hibás válasz97ms7620 KiB
45Hibás válasz85ms7104 KiB
subtask90/25
46Hibás válasz206ms15092 KiB
47Hibás válasz181ms14036 KiB
48Hibás válasz224ms15240 KiB
49Hibás válasz170ms2612 KiB
50Hibás válasz170ms2612 KiB
51Hibás válasz168ms2768 KiB
52Hibás válasz149ms11060 KiB
53Hibás válasz170ms12600 KiB
54Hibás válasz179ms13620 KiB
55Hibás válasz112ms2612 KiB