165452025-05-06 17:59:44algoproTornyokcpp17Időlimit túllépés 28/100504ms73240 KiB
// UUID: 481ce5a3-b646-4e85-a063-6b9e06f362a3
#include <bits/stdc++.h>
using namespace std;
#define int int64_t

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);

    map<int, vector<int>> hm;
    for (int i = 0; i < k; i++) {
        hm[h[i]].push_back(i);
    }

    map<int, int> hans;
    stack<int> s;
    s.push(2e9 + 1);
    for (int x : b) {
        int i = 1;
        while (s.top() <= x) {
            hans[s.top()] = max(hans[s.top()], i);
            s.pop();
            i++;
        }
        s.push(x);
    }
    hans[0] = 0;
    hans[2e9] = 0;

    vector<int> hs, vals;
    for (auto [x, y] : hans) {
        hs.push_back(x);
        vals.push_back(y);
    }
    for (int i = 1; i < vals.size(); i++) {
        vals[i] = max(vals[i], vals[i - 1]);
    }
    for (int i = 0; i < k; i++) {
        int j = upper_bound(hs.begin(), hs.end(), h[i]) - hs.begin() - 1;
        cout << vals[j] << " ";
    }
    cout << "\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base28/100
1Elfogadva0/01ms508 KiB
2Időlimit túllépés0/0490ms60288 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva6/61ms316 KiB
6Hibás válasz0/61ms316 KiB
7Hibás válasz0/430ms5564 KiB
8Hibás válasz0/448ms10420 KiB
9Elfogadva8/8356ms40180 KiB
10Időlimit túllépés0/8469ms61140 KiB
11Időlimit túllépés0/5504ms65664 KiB
12Időlimit túllépés0/5490ms53916 KiB
13Elfogadva5/5166ms19112 KiB
14Elfogadva5/5312ms42832 KiB
15Időlimit túllépés0/5490ms64988 KiB
16Időlimit túllépés0/5490ms73240 KiB
17Időlimit túllépés0/5490ms61832 KiB
18Időlimit túllépés0/5490ms58272 KiB
19Időlimit túllépés0/5486ms58012 KiB
20Időlimit túllépés0/5486ms57896 KiB
21Időlimit túllépés0/5486ms60248 KiB
22Időlimit túllépés0/5479ms59540 KiB