162222025-04-14 17:57:57gortomiNövekvő Ödön és a Másoló Varázslócpp17Hibás válasz 0/100224ms15156 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
3Elfogadva48ms1080 KiB
4Elfogadva48ms1076 KiB
5Hibás válasz50ms1076 KiB
subtask30/10
6Hibás válasz1ms316 KiB
7Hibás válasz1ms316 KiB
8Hibás válasz1ms316 KiB
subtask40/15
9Hibás válasz1ms316 KiB
10Hibás válasz1ms316 KiB
11Hibás válasz1ms320 KiB
12Hibás válasz1ms332 KiB
subtask50/5
13Hibás válasz4ms500 KiB
14Hibás válasz4ms316 KiB
15Hibás válasz4ms464 KiB
subtask60/5
16Hibás válasz4ms316 KiB
17Hibás válasz4ms716 KiB
18Hibás válasz4ms464 KiB
19Hibás válasz4ms316 KiB
subtask70/10
20Hibás válasz4ms600 KiB
21Hibás válasz4ms720 KiB
22Hibás válasz4ms316 KiB
23Hibás válasz3ms448 KiB
24Hibás válasz4ms564 KiB
subtask80/25
25Hibás válasz48ms1476 KiB
26Elfogadva48ms1584 KiB
27Elfogadva46ms1584 KiB
28Elfogadva1ms316 KiB
29Hibás válasz82ms1624 KiB
30Hibás válasz108ms7736 KiB
31Hibás válasz104ms7616 KiB
32Hibás válasz90ms7628 KiB
33Hibás válasz87ms6964 KiB
34Hibás válasz86ms7108 KiB
35Hibás válasz82ms6592 KiB
36Hibás válasz104ms7624 KiB
37Hibás válasz92ms7732 KiB
38Hibás válasz85ms6708 KiB
39Hibás válasz82ms1488 KiB
40Hibás válasz57ms1472 KiB
41Hibás válasz85ms6452 KiB
42Hibás válasz52ms4248 KiB
43Hibás válasz105ms7620 KiB
44Hibás válasz98ms7628 KiB
45Hibás válasz86ms7220 KiB
subtask90/25
46Hibás válasz202ms15088 KiB
47Hibás válasz180ms13876 KiB
48Hibás válasz224ms15156 KiB
49Hibás válasz168ms2768 KiB
50Hibás válasz170ms2772 KiB
51Hibás válasz168ms2780 KiB
52Hibás válasz144ms11024 KiB
53Hibás válasz168ms12596 KiB
54Hibás válasz177ms13620 KiB
55Hibás válasz112ms2760 KiB