262062026-03-21 22:12:22kukkerman20G (40 pont)cpp17Elfogadva 40/4016ms1392 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>

void beolvas(std::vector<int> &hazak, std::vector<int> &antennak, std::istream &be = std::cin) {
    int n, q;
    be >> n >> q;

    hazak.resize(n);
    for (auto &h : hazak) {
        be >> h;
    }

    antennak.resize(q);
    for (auto &a : antennak) {
        be >> a;
    }
}

void feldolgoz(const std::vector<int> &hazak, const std::vector<int> &antennak) {
    const int n = static_cast<int>(hazak.size());
    const int q = static_cast<int>(antennak.size());

    std::vector<int> h_nov;
    h_nov.reserve(n);

    h_nov.push_back(0);
    for (int i = 1; i < n; i++) {
        if (hazak[h_nov.back()] <= hazak[i]) {
            h_nov.push_back(i);
        }
    }
    const int k = static_cast<int>(h_nov.size());

    std::vector<int> a_sorrend(q);
    std::iota(a_sorrend.begin(), a_sorrend.end(), 0);
    std::sort(a_sorrend.begin(), a_sorrend.end(), [&](int i, int j) { return antennak[i] < antennak[j]; });

    std::vector<int> db(q);
    int j = 0;
    for (const int i : a_sorrend) {
        const auto m = antennak[i];

        for (; j < k - 1 && hazak[h_nov[j]] <= m; j++) { }
        db[i] = h_nov[j] + 1;
    }

    for (const auto x : db) {
        std::cout << x << '\n';
    }
}

int main() {
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);
    std::cout.tie(nullptr);

    std::vector<int> hazak, antennak;
    beolvas(hazak, antennak);
    feldolgoz(hazak, antennak);

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base40/40
1Elfogadva0/01ms316 KiB
2Elfogadva0/014ms820 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva3/32ms436 KiB
8Elfogadva3/316ms1340 KiB
9Elfogadva3/314ms1332 KiB
10Elfogadva3/316ms1340 KiB
11Elfogadva4/414ms1392 KiB
12Elfogadva4/414ms1332 KiB
13Elfogadva4/414ms1360 KiB
14Elfogadva4/414ms1332 KiB
15Elfogadva4/416ms1332 KiB