167222025-05-10 20:04:54algoproTornyokcpp17Time limit exceeded 55/100500ms16264 KiB
// UUID: d54d6115-0585-4cd6-8f8f-b2a057cd0c0f
#include <bits/stdc++.h>
using namespace std;

int main() {
	int n , q;cin >> n >> q;
	vector<array<int , 2>> a;a.push_back({2000000000 , 0});
	for(int i = 0; i < n; i++){
		int y; cin >> y;
		a.push_back({y , i+1});
	}
	a.push_back({2000000000 , n+1});
	stack<int> m;
	m.push(0);
	vector<int> b, c;
	b.push_back(-1);
	for(int i = 1; i <= n; i++){
		while(a[m.top()][0] < a[i][0])m.pop();
		b.push_back(m.top());
		m.push(a[i][1]);
	}
	cout << endl;
	b.push_back(-1);
	sort(a.begin() , a.end());
	vector<array<int , 2>> qs;
	for(int i = 0; i < q; i++){
		int y; cin >> y;
		qs.push_back({y , i});
	} 
	sort(qs.begin() , qs.end());
	vector<int> ans(q);
	int j = 0 , k = 0;
	vector<int> u(n+2 , 1);
	for(int i = 0; i < q; i++){
		while(qs[i][0] > a[j][0]){
			k = max(k , u[a[j][1]]);
			u[b[a[j][1]]] = max(u[b[a[j][1]]] , u[a[j][1]]+1);
			j++;
		}
		ans[qs[i][1]] = k;
	}
	for(int x : ans)cout << x << " ";

}
SubtaskSumTestVerdictTimeMemory
base55/100
1Accepted0/01ms316 KiB
2Time limit exceeded0/0486ms14208 KiB
3Accepted2/21ms316 KiB
4Accepted2/21ms316 KiB
5Accepted6/61ms316 KiB
6Accepted6/61ms316 KiB
7Accepted4/429ms1192 KiB
8Accepted4/454ms1996 KiB
9Accepted8/8200ms6968 KiB
10Accepted8/8363ms13804 KiB
11Time limit exceeded0/5481ms14212 KiB
12Time limit exceeded0/5488ms16008 KiB
13Accepted5/5103ms3488 KiB
14Accepted5/5239ms8852 KiB
15Accepted5/5381ms14172 KiB
16Time limit exceeded0/5446ms12676 KiB
17Time limit exceeded0/5483ms14212 KiB
18Time limit exceeded0/5500ms16220 KiB
19Time limit exceeded0/5483ms15672 KiB
20Time limit exceeded0/5485ms16260 KiB
21Time limit exceeded0/5481ms16264 KiB
22Time limit exceeded0/5500ms16260 KiB