一.(WA on#16)
#include<bits/stdc++.h>
#define ll long long
using namespace std;
template<typename T>inline void read(T &x){
x=0;
char c=getchar();
T ret=0;
while(!isdigit(c))ret|=!(c^'-'),c=getchar();
while(isdigit(c))x=(x<<3)+(x<<1)+(c^48),c=getchar();
if(ret)x=(~x)+1;
return;
}
template<typename T>inline void print(T x){
if(x<0)putchar('-'),x=(~x)+1;
if(x>9)print(x/10);
putchar((x-x/10*10)^48);
return;
}
template<typename T>inline void wr1(T x){
print(x);
putchar(' ');
return;
}
template<typename T>inline void wr2(T x){
print(x);
putchar('\n');
return;
}
ll n,q,a[114514],b,k;
bool chek(ll dis){
ll l=1,r=n,sum=0;
while(l<r){//查找序列中第一个>=b-dis的位置
ll mid=(l+r)>>1;
if(b-a[mid]<=dis){
r=mid;
}
else{
l=mid+1;
}
}
sum+=1-l;
l=1,r=n;
while(l<r){//查找序列中第一个<=b+dis的位置
ll mid=(l+r+1)>>1;
if(a[mid]-b<=dis){
l=mid;
}
else{
r=mid-1;
}
}
sum+=l;
return sum>=k;
}
ll work(){
ll l=0,r=2e8+10;
while(l<r){
ll mid=(l+r)>>1;
if(chek(mid)){
r=mid;
}
else{
l=mid+1;
}
}
return l;
}
int main(){
read(n);
read(q);
for(int i=1;i<=n;++i){
read(a[i]);
}
sort(a+1,a+n+1);
while(q--){
read(b);
read(k);
wr2(work());
}
return 0;
}
二.(AC)
// LUOGU_RID: 172377347
#include<bits/stdc++.h>
#define ll long long
using namespace std;
template<typename T>inline void read(T &x){
x=0;
char c=getchar();
T ret=0;
while(!isdigit(c))ret|=!(c^'-'),c=getchar();
while(isdigit(c))x=(x<<3)+(x<<1)+(c^48),c=getchar();
if(ret)x=(~x)+1;
return;
}
template<typename T>inline void print(T x){
if(x<0)putchar('-'),x=(~x)+1;
if(x>9)print(x/10);
putchar((x-x/10*10)^48);
return;
}
template<typename T>inline void wr1(T x){
print(x);
putchar(' ');
return;
}
template<typename T>inline void wr2(T x){
print(x);
putchar('\n');
return;
}
ll n,q,a[114514],b,k;
bool chek(ll dis){
ll l,r;
r=upper_bound(a+1,a+n+1,b+dis)-a-1;//第一个>b-dis的
l=lower_bound(a+1,a+n+1,b-dis)-a-1;//第一个>=b-dis的
return r-l>=k;
}
ll work(){
ll l=0,r=2e8+10;
while(l<r){
ll mid=(l+r)>>1;
if(chek(mid)){
r=mid;
}
else{
l=mid+1;
}
}
return l;
}
int main(){
read(n);
read(q);
for(int i=1;i<=n;++i){
read(a[i]);
}
sort(a+1,a+n+1);
while(q--){
read(b);
read(k);
wr2(work());
}
return 0;
}