2017 ccpc秦皇岛M Safest Buildings

    科技2022-07-17  101

    然后就分为两种情况

    1 在高频率范围内有点 ----------------输出所有到(0,0)的距离小于|2*r-R|的点的编号 2 高频范围内没有点 ----------------输出离(0,0)最近的所有点,即与最近距离相等的所有点的编号

    补:因为平方可以免去进度问题,正负号问题,所以这里直接是距离的平方

    #include<bits/stdc++.h> using namespace std; struct node { int sum; int id; node()=default; node(int &a,int &b,int id):id(id){ sum=a*a+b*b; } bool operator <(const node &p) { return sum<p.sum; } }; int main() { int t; cin>>t; while(t--) { int n,R,r; cin>>n>>R>>r; node nn[n]; for(int i=0;i<n;i++) { int a,b; cin>>a>>b; nn[i]=node(a,b,i+1); } sort(nn,nn+n); int len=0; int ma=(2*r-R)*(2*r-R); for(;len<n;len++) if(nn[len].sum>ma&&nn[0].sum!=nn[len].sum) break; sort(nn,nn+len,[](node &a,node &b){ return a.id<b.id; }); cout<<len<<endl; for(int i=0;i<len;i++) cout<<nn[i].id<<(i==len-1?'\n':' '); } return 0; }
    Processed: 0.011, SQL: 8