202009 CSP模拟
01检测点查询
#include <iostream>
#include <algorithm>
#include <utility>
using namespace std;
const int N=205;
pair<int,int>p[N];
bool cmp(pair<int,int>a,pair<int,int>b)
{
if(a.second!=b.second)
return a.second<b.second;
else
return a.first<b.first;
}
int main()
{
int n,x,y;
cin>>n>>x>>y;
int i,a,b,D;
for(i=0;i<n;i++)
{
cin>>a>>b;
D=(a-x)*(a-x)+(b-y)*(b-y);
p[i]=make_pair(i+1,D);
}
sort(p,p+n,cmp);
for(i=0;i<3;i++)
cout<<p[i].first<<endl;
return 0;
}
这里注意pair的自定义排序
02风险人群筛查
#include <iostream>
#include <algorithm>
const int N=1000;
using namespace std;
int main()
{
int n,k,t,xl,yd,xr,yu,i,j,x,y,pass=0,stay=0,flag=0;
int temp[N],sum[N];
cin>>n>>k>>t>>xl>>yd>>xr>>yu;
fill(sum,sum+t,0);
for(i=0;i<n;i++)
{
flag=0;
fill(temp,temp+t,0);
for(j=0;j<t;j++)
{
cin>>x>>y;
if(xl<=x&&x<=xr&&yd<=y&&y<=yu)
{
flag=1;
temp[j]=1;
}
if(j==0)
sum[j]=temp[j];
else
sum[j]=sum[j-1]+temp[j];
}
if(flag==1)
pass++;
for(j=0;j<t-k;j++)
{
if(sum[j+k]-sum[j]==k)
{
stay++;
break;
}
}
}
cout<<pass<<endl;
cout<<stay;
return 0;
}