2分
2025-09-08 17:57:12
发布于:浙江
8阅读
0回复
0点赞
时间复杂度O(m longn)
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,m,hi[1145147],ne[1145147],b;
ll rf(ll x){
ll l=1,r=n,mid,ans;
while(l<=r){
mid=(l+r)/2;
if(ne[mid]>x){
ans=mid-1;
r=mid-1;
}else l=mid+1;
}
return hi[ans];
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>hi[i];
ne[i]=max(hi[i]-hi[i-1],ne[i-1]);
}
while(m--){
cin>>b;
if(b>=ne[n]){
cout<<hi[n];
}
else cout<<rf(b);
cout<<" ";
}
return 0;
}
这里空空如也
有帮助,赞一个