162212025-04-14 17:57:06Error42Növekvő Ödön és a Másoló Varázslócpp17Időlimit túllépés 50/100699ms3360 KiB
#include <algorithm>
#include <cassert>
#include <iostream>
#include <variant>
#include <vector>

using namespace std;

int const INF = 2e9;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, m;
    cin >> n >> m;

    vector<int> a(n);
    for (int& x : a)
        cin >> x;

    a.insert(a.begin(), 0);
    a.push_back(INF);

    vector<int> b(m);
    for (int& x : b)
        cin >> x;

    sort(b.begin(), b.end());

    int lis_max_len = 0;
    vector<int> lis = { 0 };

    for (int j = 1; j < a.size(); j++) {
        auto it2 = upper_bound(lis.rbegin(), lis.rend(), monostate(), [&](monostate _, int const& i) {
            return a[i] < a[j];
        });

        auto it = find_if_not(it2, lis.rend(), [&](int const& i) {
#ifdef _DEBUG
            cerr << i << " " << j
                << " : " << a[i] << ">=" << a[j]
                << " | " << lower_bound(b.begin(), b.end(), a[j]) - lower_bound(b.begin(), b.end(), a[i]) + 1 << "<" << j - i << endl;
#endif

            return a[i] >= a[j] // not increasing
                || lower_bound(b.begin(), b.end(), a[j]) - lower_bound(b.begin(), b.end(), a[i]) + 1 < j - i; // not enough elements to put between
        });

        if (it == lis.rend())
            continue;

        if (it == lis.rbegin())
            lis.push_back(j);
        else
            *(it - 1) = j;
    }

#ifdef _DEBUG
    assert(count(lis.begin(), lis.end(), n + 1));
#endif

    cout << n - (find(lis.begin(), lis.end(), n + 1) - lis.begin() - 1) << "\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Időlimit túllépés686ms880 KiB
subtask25/5
3Elfogadva46ms1076 KiB
4Elfogadva46ms1084 KiB
5Elfogadva48ms1076 KiB
subtask310/10
6Elfogadva1ms316 KiB
7Elfogadva1ms508 KiB
8Elfogadva1ms508 KiB
subtask415/15
9Elfogadva1ms320 KiB
10Elfogadva1ms316 KiB
11Elfogadva1ms316 KiB
12Elfogadva1ms316 KiB
subtask55/5
13Elfogadva3ms316 KiB
14Elfogadva3ms316 KiB
15Elfogadva3ms336 KiB
subtask65/5
16Elfogadva3ms316 KiB
17Elfogadva19ms472 KiB
18Elfogadva4ms316 KiB
19Elfogadva3ms464 KiB
subtask710/10
20Elfogadva4ms316 KiB
21Elfogadva158ms316 KiB
22Elfogadva4ms316 KiB
23Elfogadva46ms508 KiB
24Elfogadva48ms316 KiB
subtask80/25
25Elfogadva46ms1196 KiB
26Elfogadva46ms1200 KiB
27Elfogadva46ms1192 KiB
28Elfogadva1ms316 KiB
29Elfogadva130ms1196 KiB
30Elfogadva78ms1964 KiB
31Elfogadva361ms1956 KiB
32Időlimit túllépés685ms1452 KiB
33Időlimit túllépés686ms1200 KiB
34Időlimit túllépés699ms1200 KiB
35Időlimit túllépés685ms1196 KiB
36Elfogadva361ms1968 KiB
37Időlimit túllépés680ms1452 KiB
38Időlimit túllépés699ms1196 KiB
39Elfogadva125ms1192 KiB
40Elfogadva61ms1204 KiB
41Időlimit túllépés688ms1200 KiB
42Elfogadva136ms1376 KiB
43Elfogadva56ms1964 KiB
44Időlimit túllépés680ms1980 KiB
45Időlimit túllépés699ms1212 KiB
subtask90/25
46Időlimit túllépés686ms2848 KiB
47Időlimit túllépés686ms2016 KiB
48Időlimit túllépés686ms3360 KiB
49Elfogadva266ms1844 KiB
50Elfogadva289ms1880 KiB
51Elfogadva266ms1988 KiB
52Időlimit túllépés683ms2024 KiB
53Időlimit túllépés683ms2180 KiB
54Időlimit túllépés683ms2232 KiB
55Elfogadva108ms1844 KiB