99972024-03-23 19:13:18111Tornyokcpp17Elfogadva 100/100340ms225020 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ÖsszpontTesztVerdiktIdőMemória
base100/100
1Elfogadva0/03ms1828 KiB
2Elfogadva0/0287ms64036 KiB
3Elfogadva2/23ms11244 KiB
4Elfogadva2/23ms11580 KiB
5Elfogadva6/63ms11496 KiB
6Elfogadva6/63ms11448 KiB
7Elfogadva4/417ms15868 KiB
8Elfogadva4/425ms19688 KiB
9Elfogadva8/896ms44320 KiB
10Elfogadva8/8153ms80720 KiB
11Elfogadva5/5264ms81924 KiB
12Elfogadva5/5323ms101476 KiB
13Elfogadva5/557ms51508 KiB
14Elfogadva5/5130ms79608 KiB
15Elfogadva5/5172ms108016 KiB
16Elfogadva5/5229ms98776 KiB
17Elfogadva5/5277ms117048 KiB
18Elfogadva5/5331ms137852 KiB
19Elfogadva5/5340ms148376 KiB
20Elfogadva5/5293ms220536 KiB
21Elfogadva5/5300ms225020 KiB
22Elfogadva5/5245ms216896 KiB