#include
#include
#include
#include
#include
#include
using namespace std; #define LL long long int #define maxDim 5 #define maxN 50000 #define maxNeed 10 #define inf int dim; struct kdNode{ LL x[maxDim]; bool leaf; int div; kdNode(){} void read(){ for(int i=0; i
qq; inline void pqClear(){ while(!qq.empty()){ qq.pop(); } } void buildKd(int l, int r, int _div=dim-1){ if(l>r){ return; } int mid=(l+r)>>1; cmpDim=_div; nth_element(p+l, p+mid, p+r+1, cmp); p[mid].div=_div; if(l==r){ p[mid].leaf=true; return; } buildKd(l, mid-1, (_div+1)%dim); buildKd(mid+1, r, (_div+1)%dim); } int needNum, curNum; LL maxDis; void findKd(int l, int r){ if(l>r){ return; } int mid=(l+r)>>1; LL curDis=dist(p[mid], tar); if(p[mid].leaf){ if(curNum
0){//在右边 findKd(mid+1, r); if(curNum < needNum){ qq.push(node(p[mid], curDis)); ++curNum; maxDis=qq.top().dis; findKd(l, mid-1); } else{ if(curDis
=0; --i){ Ans[i].write(); } } } return 0; } /* 3 2 1 1 1 3 3 4 2 2 3 2 2 3 1 */