A-KNN算法_"华为杯"华南理工大学程序设计竞赛(同步赛) (nowcoder.com)
//当时就抱着试一试的心态 果然超时:
1.#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+6;
const int inf=0x3f3f3f3f;
int a[N];int c[N];
void solve()
{int n,q;cin>>n>>q;for(int i=1;i<=n;i++)cin>>a[i];sort(a+1,a+1+n);while(q--){int p,k;cin>>p>>k;if(p>=a[n])cout<<abs(a[n-k+1]-p)<<endl;else if(p<=a[1])cout<<(a[k]-p)<<endl;else{for(int i=1;i<=n;i++){c[i]=abs(a[i]-p);}sort(c+1,c+1+n);cout<<c[k]<<endl;}}
}
signed main()
{//ios_base::sync_with_stdio(false);//cin.tie(nullptr),cout.tie(nullptr);int t=1;//cin>>t;while(t--){solve();}return 0;
}//然后这样还是超时:
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+6;
const int inf=0x3f3f3f3f;
int a[N];int n,q;int p,k;
bool cmp(int x,int y)
{return abs(x-p)<abs(y-p);
}
void solve()
{cin>>n>>q;for(int i=1;i<=n;i++)cin>>a[i];while(q--){cin>>p>>k;sort(a+1,a+1+n,cmp);cout<<abs(a[k]-p)<<endl;}
}
signed main()
{ios_base::sync_with_stdio(false);cin.tie(nullptr),cout.tie(nullptr);int t=1;//cin>>t;while(t--){solve();}return 0;
}//看了某红名佬的才知道用二分......hh
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+6;
const int inf=0x3f3f3f3f;
int a[N];int n,q;int p,k;
bool cmp(int x,int y)
{return abs(x-p)<abs(y-p);
}
void solve()
{cin>>n>>q;for(int i=1;i<=n;i++)cin>>a[i];sort(a+1,a+1+n);while(q--){cin>>p>>k;int l=0,r=1e10;int nct=-1;while(l<=r){int mid=(l+r)>>1;int fk1=lower_bound(a+1,a+1+n,p-mid)-a;int fk2=upper_bound(a+1,a+1+n,p+mid)-a;if(fk2-fk1<k){nct=max(nct,mid);l=mid+1;}else r=mid-1;}cout<<nct+1<<endl;}
}
signed main()
{//ios_base::sync_with_stdio(false);//cin.tie(nullptr),cout.tie(nullptr);int t=1;//cin>>t;while(t--){solve();}return 0;
}