165792025-05-06 18:30:13algoproTornyokcpp17Wrong answer 46/100426ms16968 KiB
// UUID: 736e563f-1b51-4e32-bea7-f18daed8f053
#include <bits/stdc++.h>
using namespace std;

int32_t main() {
    cin.tie(0), ios::sync_with_stdio(0);
    int n, k;
    cin >> n >> k;
    vector<int> b(n), h(k);
    for (int& x : b) cin >> x;
    for (int& x : h) cin >> x;
    b.push_back(2e9);

    vector<array<int, 2>> vans(n + 5);
    vector<int> v(n + 5);
    v[0] = 2e9 + 1;
    int vp = 0, vansp = -1;
    for (int x : b) {
        int i = 1;
        while (v[vp] <= x) {
            vans[++vansp] = {v[vp], i};
            vp--;
            i++;
        }
        v[++vp] = x;
    }

    vans[++vansp] = {0, 0};
    vans[++vansp] = {(int)2e9, 0};
    sort(vans.begin(), vans.end());

    for (int i = 1; i < vans.size(); i++) {
        vans[i][1] = max(vans[i][1], vans[i - 1][1]);
    }
    for (int i = 0; i < k; i++) {
        int l = -1, r = vans.size();
        while (r - l > 1) {
            int m = (l + r) / 2;
            if (vans[m][0] >= h[i]) {
                r = m;
            } else {
                l = m;
            }
        }
        cout << vans[l][1] << " ";
    }
    cout << "\n";
}
SubtaskSumTestVerdictTimeMemory
base46/100
1Accepted0/01ms316 KiB
2Wrong answer0/0289ms13912 KiB
3Accepted2/21ms316 KiB
4Accepted2/21ms316 KiB
5Accepted6/61ms316 KiB
6Wrong answer0/61ms316 KiB
7Wrong answer0/414ms1296 KiB
8Wrong answer0/427ms1924 KiB
9Accepted8/8141ms6572 KiB
10Accepted8/8166ms9640 KiB
11Wrong answer0/5254ms13400 KiB
12Wrong answer0/5316ms15848 KiB
13Accepted5/552ms3180 KiB
14Accepted5/5119ms6672 KiB
15Accepted5/5180ms10016 KiB
16Wrong answer0/5239ms11428 KiB
17Wrong answer0/5284ms13916 KiB
18Wrong answer0/5349ms16616 KiB
19Wrong answer0/5354ms16616 KiB
20Time limit exceeded0/5426ms16876 KiB
21Time limit exceeded0/5414ms16872 KiB
22Accepted5/5395ms16968 KiB