165152025-05-05 22:27:47algoproTornyokcpp17Időlimit túllépés 0/100492ms20372 KiB
// UUID: 032e0261-bbdd-4514-b680-b639c4f9fb5a
#include <bits/stdc++.h>
using namespace std;

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


	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 (lis_in_pos[i] == -1) lis_in_pos[i] = 0;
		if (eloz[i] != -1) 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() + 1 << " ";
	}

}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/100
1Elfogadva0/01ms500 KiB
2Időlimit túllépés0/0488ms13872 KiB
3Hibás válasz0/21ms316 KiB
4Hibás válasz0/21ms316 KiB
5Hibás válasz0/61ms316 KiB
6Hibás válasz0/61ms316 KiB
7Hibás válasz0/426ms1332 KiB
8Hibás válasz0/448ms2012 KiB
9Hibás válasz0/8151ms6680 KiB
10Hibás válasz0/8232ms11788 KiB
11Időlimit túllépés0/5407ms13596 KiB
12Időlimit túllépés0/5481ms16180 KiB
13Hibás válasz0/593ms3256 KiB
14Hibás válasz0/5189ms7596 KiB
15Hibás válasz0/5287ms11944 KiB
16Időlimit túllépés0/5425ms11484 KiB
17Időlimit túllépés0/5481ms13876 KiB
18Időlimit túllépés0/5483ms16176 KiB
19Időlimit túllépés0/5481ms16436 KiB
20Időlimit túllépés0/5490ms20248 KiB
21Időlimit túllépés0/5492ms20196 KiB
22Időlimit túllépés0/5481ms20372 KiB