162212025-04-14 17:57:06Error42Növekvő Ödön és a Másoló Varázslócpp17Time limit exceeded 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";
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
2Time limit exceeded686ms880 KiB
subtask25/5
3Accepted46ms1076 KiB
4Accepted46ms1084 KiB
5Accepted48ms1076 KiB
subtask310/10
6Accepted1ms316 KiB
7Accepted1ms508 KiB
8Accepted1ms508 KiB
subtask415/15
9Accepted1ms320 KiB
10Accepted1ms316 KiB
11Accepted1ms316 KiB
12Accepted1ms316 KiB
subtask55/5
13Accepted3ms316 KiB
14Accepted3ms316 KiB
15Accepted3ms336 KiB
subtask65/5
16Accepted3ms316 KiB
17Accepted19ms472 KiB
18Accepted4ms316 KiB
19Accepted3ms464 KiB
subtask710/10
20Accepted4ms316 KiB
21Accepted158ms316 KiB
22Accepted4ms316 KiB
23Accepted46ms508 KiB
24Accepted48ms316 KiB
subtask80/25
25Accepted46ms1196 KiB
26Accepted46ms1200 KiB
27Accepted46ms1192 KiB
28Accepted1ms316 KiB
29Accepted130ms1196 KiB
30Accepted78ms1964 KiB
31Accepted361ms1956 KiB
32Time limit exceeded685ms1452 KiB
33Time limit exceeded686ms1200 KiB
34Time limit exceeded699ms1200 KiB
35Time limit exceeded685ms1196 KiB
36Accepted361ms1968 KiB
37Time limit exceeded680ms1452 KiB
38Time limit exceeded699ms1196 KiB
39Accepted125ms1192 KiB
40Accepted61ms1204 KiB
41Time limit exceeded688ms1200 KiB
42Accepted136ms1376 KiB
43Accepted56ms1964 KiB
44Time limit exceeded680ms1980 KiB
45Time limit exceeded699ms1212 KiB
subtask90/25
46Time limit exceeded686ms2848 KiB
47Time limit exceeded686ms2016 KiB
48Time limit exceeded686ms3360 KiB
49Accepted266ms1844 KiB
50Accepted289ms1880 KiB
51Accepted266ms1988 KiB
52Time limit exceeded683ms2024 KiB
53Time limit exceeded683ms2180 KiB
54Time limit exceeded683ms2232 KiB
55Accepted108ms1844 KiB