167152025-05-10 02:21:44peti1234Tornyokcpp17Accepted 100/100187ms13232 KiB
#include <bits/stdc++.h>
using namespace std;
const int c=1000005, sok=2e9;
int n, q, t[c], len[c], opt[c];
vector<int> sor;
int main() {
	ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin >> n >> q;
    for (int i=1; i<=n; i++) {
        cin >> t[i];
        opt[i]=sok;
    }
    for (int i=n; i>=1; i--) {
        while (sor.size()>0 && t[i]>t[sor.back()]) {
            len[i]=max(len[i], len[sor.back()]);
            sor.pop_back();
        }
        sor.push_back(i);
        len[i]++;
        opt[len[i]]=min(opt[len[i]], t[i]);
    }

    while (q--) {
        int val;
        cin >> val;
        int lo=0, hi=n+1, mid;
        while (hi-lo>1) {
            mid=(hi+lo)/2;
            if (val>opt[mid]) {
                lo=mid;
            } else {
                hi=mid;
            }
        }
        cout << lo << " ";
    }
    cout << "\n";
}
SubtaskSumTestVerdictTimeMemory
base100/100
1Accepted0/01ms320 KiB
2Accepted0/0153ms10552 KiB
3Accepted2/21ms508 KiB
4Accepted2/21ms316 KiB
5Accepted6/61ms316 KiB
6Accepted6/61ms316 KiB
7Accepted4/48ms1040 KiB
8Accepted4/416ms1432 KiB
9Accepted8/852ms6044 KiB
10Accepted8/875ms7368 KiB
11Accepted5/5133ms10292 KiB
12Accepted5/5159ms12040 KiB
13Accepted5/528ms2436 KiB
14Accepted5/557ms5224 KiB
15Accepted5/589ms7692 KiB
16Accepted5/5126ms8756 KiB
17Accepted5/5156ms10548 KiB
18Accepted5/5181ms12444 KiB
19Accepted5/5187ms12308 KiB
20Accepted5/5165ms13228 KiB
21Accepted5/5173ms13232 KiB
22Accepted5/5158ms12596 KiB