162202025-04-14 17:54:57Error42Növekvő Ödön és a Másoló Varázslócpp17Time limit exceeded 50/100690ms2848 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 it = find_if_not(lis.rbegin(), 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
1Accepted1ms508 KiB
2Time limit exceeded684ms880 KiB
subtask25/5
3Accepted50ms1076 KiB
4Accepted52ms1076 KiB
5Accepted50ms1076 KiB
subtask310/10
6Accepted1ms316 KiB
7Accepted1ms316 KiB
8Accepted1ms508 KiB
subtask415/15
9Accepted1ms316 KiB
10Accepted1ms316 KiB
11Accepted1ms316 KiB
12Accepted1ms316 KiB
subtask55/5
13Accepted3ms444 KiB
14Accepted3ms316 KiB
15Accepted3ms576 KiB
subtask65/5
16Accepted3ms688 KiB
17Accepted19ms472 KiB
18Accepted4ms316 KiB
19Accepted3ms316 KiB
subtask710/10
20Accepted4ms508 KiB
21Accepted190ms512 KiB
22Accepted7ms500 KiB
23Accepted57ms460 KiB
24Accepted59ms316 KiB
subtask80/25
25Accepted50ms1192 KiB
26Accepted50ms1196 KiB
27Accepted50ms1196 KiB
28Accepted1ms320 KiB
29Accepted185ms1208 KiB
30Accepted87ms2124 KiB
31Accepted432ms1960 KiB
32Time limit exceeded690ms1448 KiB
33Time limit exceeded686ms1284 KiB
34Time limit exceeded685ms1220 KiB
35Time limit exceeded671ms1192 KiB
36Accepted430ms1964 KiB
37Time limit exceeded680ms1452 KiB
38Time limit exceeded685ms1196 KiB
39Accepted177ms1204 KiB
40Accepted75ms1200 KiB
41Time limit exceeded684ms1396 KiB
42Accepted168ms1380 KiB
43Accepted59ms1964 KiB
44Time limit exceeded683ms1960 KiB
45Time limit exceeded686ms1196 KiB
subtask90/25
46Time limit exceeded676ms2744 KiB
47Time limit exceeded676ms2028 KiB
48Time limit exceeded676ms2848 KiB
49Accepted414ms1988 KiB
50Accepted426ms1844 KiB
51Accepted407ms2080 KiB
52Time limit exceeded679ms2024 KiB
53Time limit exceeded680ms2176 KiB
54Time limit exceeded676ms2096 KiB
55Accepted133ms1848 KiB