9997 2024. 03. 23 19:13:18 111 Tornyok cpp17 Elfogadva 100/100 340ms 225020 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int N,K;
	cin>>N>>K;
	vector<int>v(N);
	for(int i=0;i<N;i++){
		cin>>v[i];
	}
	vector<int>w(N),l(N);
	vector<int>s,z;
	for(int i=0;i<N;i++){
		while(!s.empty()&&v[s.back()]<v[i]){
			l[s.back()]=w[*lower_bound(z.begin(),z.end(),s.back())]-(s.size()-1);
			s.pop_back();
		}
		s.push_back(i);
		w[i]=s.size();
		while(!z.empty()&&w[z.back()]<w[i]){
			z.pop_back();
		}
		z.push_back(i);
	}
	while(!s.empty()){
		l[s.back()]=w[*lower_bound(z.begin(),z.end(),s.back())]-(s.size()-1);
		s.pop_back();
	}
	vector<int>u(N);
	iota(u.begin(),u.end(),0);
	sort(u.begin(),u.end(),[&](int a,int b){return v[a]<v[b];});
	vector<pair<int,int>>q;
	q.emplace_back(0,0);
	int p=0;
	for(int i:u){
		if(l[i]>p){
			p=l[i];
			q.emplace_back(v[i],l[i]);
		}
	}
	while(K--){
		int H;
		cin>>H;
		cout<<prev(lower_bound(q.begin(),q.end(),pair<int,int>{H,0}))->second<<' ';
	}
	cout<<'\n';
	return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 100/100
1 Elfogadva 0/0 3ms 1828 KiB
2 Elfogadva 0/0 287ms 64036 KiB
3 Elfogadva 2/2 3ms 11244 KiB
4 Elfogadva 2/2 3ms 11580 KiB
5 Elfogadva 6/6 3ms 11496 KiB
6 Elfogadva 6/6 3ms 11448 KiB
7 Elfogadva 4/4 17ms 15868 KiB
8 Elfogadva 4/4 25ms 19688 KiB
9 Elfogadva 8/8 96ms 44320 KiB
10 Elfogadva 8/8 153ms 80720 KiB
11 Elfogadva 5/5 264ms 81924 KiB
12 Elfogadva 5/5 323ms 101476 KiB
13 Elfogadva 5/5 57ms 51508 KiB
14 Elfogadva 5/5 130ms 79608 KiB
15 Elfogadva 5/5 172ms 108016 KiB
16 Elfogadva 5/5 229ms 98776 KiB
17 Elfogadva 5/5 277ms 117048 KiB
18 Elfogadva 5/5 331ms 137852 KiB
19 Elfogadva 5/5 340ms 148376 KiB
20 Elfogadva 5/5 293ms 220536 KiB
21 Elfogadva 5/5 300ms 225020 KiB
22 Elfogadva 5/5 245ms 216896 KiB