计蒜客-1290-对局匹配
程序员文章站
2022-07-07 15:38:04
...
本题就是枚举这三个人即可,并且同时设置标记数组vis,如果这个人之前没有被访问过,并且符合条件,就加入到结果集中,ans++;那么这里可以把vis同时加到结构体中进行标记即可’
//@author:hairu,wu
//@from:ahut
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
const int max_n=1e5+10;
struct num{
int val;
int vis;
};
num a[max_n];
bool cmp(num a,num b){
return a.val<b.val;
}
int main(){
int n,k;
cin >> n>>k;
for(int i=0;i<n;i++){
cin >> a[i].val;
a[i].vis=false;
}
sort(a,a+n,cmp);
int ans=0;
int cnt=1;
int tmp[3];//记录结果的位置
for(int i=0;i<n;i++){
if(a[i].vis==true) continue;
tmp[0]=i;
for(int j=i+1;j<n;j++){
if(!a[j].vis && abs(a[i].val-a[j].val)<=k){
tmp[cnt]=j;
cnt++;
}
if(cnt==3) break;
}
if(cnt==3){
ans++;
for(int k=0;k<3;k++){
a[tmp[k]].vis=true;
}
}
cnt=1; //再次枚举第一个数字
}
cout<<ans<<endl;
return 0;
}
上一篇: 谷歌地球卫星中文版无法安装提示错误1303怎么办?
下一篇: 怎么破解PS使用30天的试用期限之禁?