162202025-04-14 17:54:57Error42Növekvő Ödön és a Másoló Varázslócpp17Időlimit túllépés 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";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms508 KiB
2Időlimit túllépés684ms880 KiB
subtask25/5
3Elfogadva50ms1076 KiB
4Elfogadva52ms1076 KiB
5Elfogadva50ms1076 KiB
subtask310/10
6Elfogadva1ms316 KiB
7Elfogadva1ms316 KiB
8Elfogadva1ms508 KiB
subtask415/15
9Elfogadva1ms316 KiB
10Elfogadva1ms316 KiB
11Elfogadva1ms316 KiB
12Elfogadva1ms316 KiB
subtask55/5
13Elfogadva3ms444 KiB
14Elfogadva3ms316 KiB
15Elfogadva3ms576 KiB
subtask65/5
16Elfogadva3ms688 KiB
17Elfogadva19ms472 KiB
18Elfogadva4ms316 KiB
19Elfogadva3ms316 KiB
subtask710/10
20Elfogadva4ms508 KiB
21Elfogadva190ms512 KiB
22Elfogadva7ms500 KiB
23Elfogadva57ms460 KiB
24Elfogadva59ms316 KiB
subtask80/25
25Elfogadva50ms1192 KiB
26Elfogadva50ms1196 KiB
27Elfogadva50ms1196 KiB
28Elfogadva1ms320 KiB
29Elfogadva185ms1208 KiB
30Elfogadva87ms2124 KiB
31Elfogadva432ms1960 KiB
32Időlimit túllépés690ms1448 KiB
33Időlimit túllépés686ms1284 KiB
34Időlimit túllépés685ms1220 KiB
35Időlimit túllépés671ms1192 KiB
36Elfogadva430ms1964 KiB
37Időlimit túllépés680ms1452 KiB
38Időlimit túllépés685ms1196 KiB
39Elfogadva177ms1204 KiB
40Elfogadva75ms1200 KiB
41Időlimit túllépés684ms1396 KiB
42Elfogadva168ms1380 KiB
43Elfogadva59ms1964 KiB
44Időlimit túllépés683ms1960 KiB
45Időlimit túllépés686ms1196 KiB
subtask90/25
46Időlimit túllépés676ms2744 KiB
47Időlimit túllépés676ms2028 KiB
48Időlimit túllépés676ms2848 KiB
49Elfogadva414ms1988 KiB
50Elfogadva426ms1844 KiB
51Elfogadva407ms2080 KiB
52Időlimit túllépés679ms2024 KiB
53Időlimit túllépés680ms2176 KiB
54Időlimit túllépés676ms2096 KiB
55Elfogadva133ms1848 KiB