165162025-05-05 22:32:32algoproTornyokcpp17Accepted 100/100209ms20892 KiB
// UUID: ede9b036-060e-4ff1-93b8-a49836d741cd
#include <bits/stdc++.h>
using namespace std;

int main() {

	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	int n, q;
	cin >> n >> q;
	vector<int> sor(n), lis(n, INT_MAX), eloz(n, -1), st, lis_in_pos(n, 0);

	for (int i = 0; i < n; i++){
		cin >> sor[i];
		while(!st.empty() && sor[st.back()] < sor[i]) st.pop_back();
		if (!st.empty()) eloz[i] = st.back();
		st.push_back(i);
	}


	for (int i = n - 1; i >= 0; i--){
		if (eloz[i] != -1) lis_in_pos[eloz[i]] = max(lis_in_pos[eloz[i]], lis_in_pos[i] + 1);
		lis[lis_in_pos[i]] = min(lis[lis_in_pos[i]], sor[i]);
	}

	for (int i = 0; i < q; i++){
		int a;
		cin >> a;
		cout << lower_bound(lis.begin(), lis.end(), a) - lis.begin() << " ";
	}

}
SubtaskSumTestVerdictTimeMemory
base100/100
1Accepted0/01ms316 KiB
2Accepted0/0173ms13880 KiB
3Accepted2/21ms316 KiB
4Accepted2/21ms316 KiB
5Accepted6/61ms316 KiB
6Accepted6/61ms316 KiB
7Accepted4/410ms1200 KiB
8Accepted4/417ms1848 KiB
9Accepted8/857ms6696 KiB
10Accepted8/889ms11948 KiB
11Accepted5/5157ms13604 KiB
12Accepted5/5186ms16096 KiB
13Accepted5/529ms3124 KiB
14Accepted5/564ms7648 KiB
15Accepted5/597ms11812 KiB
16Accepted5/5144ms11500 KiB
17Accepted5/5173ms13868 KiB
18Accepted5/5209ms16948 KiB
19Accepted5/5209ms16948 KiB
20Accepted5/5190ms20376 KiB
21Accepted5/5189ms20380 KiB
22Accepted5/5180ms20892 KiB