d[i]为 i 之前有效元素
再进行二分
#include<bits/stdc++.h>
#define int long long
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
const int inf=2e18+100;
const int maxn=1e5+100;
int a[maxn],d[maxn];
signed main()
{
int n,q;
cin>>n>>q;
for(int i=1;i<=n;i++)
{
cin>>a[i];
d[i]=d[i-1]+a[i]-a[i-1]-1;
}
while(q--)
{
int x;
cin>>x;
int p=lower_bound(d+1,d+n+1,x)-d;
cout<<a[p-1]+x-d[p-1]<<"\n";
}
}