看样例的时候很快就联想到了set的去重和自动排序,但是发现在这题上不好奏效也就只能自己敲一个排序了
直接顺着思维写的了,很幸运没有超时,,
ac代码如下
#include <iostream>
#include <algorithm>
using namespace std;
int n,t;
struct rec{
int xu;
int x;
int y;
}rec[1001];
int xu,x,y;
bool check(struct rec a,struct rec b){ //检验是否重复,如果重复返回true 否则返回 false
if(a.xu==b.xu&&a.x==b.x&&a.y==b.y)
return true;
else return false;
}
bool checkswap(struct rec a,struct rec b){ //检验是否可以交换,可以交换返回true 否则返回false
if(a.xu>b.xu){
return true;
}else if(a.xu==b.xu){
if(a.x>b.x){
return true;
}else return false;
}else{
return false;
}
}
int main()
{
cin>>n;
while(n--){
cin>>t;
for(int i=0;i<t;i++){
cin>>xu>>x>>y;
rec[i].xu=xu;
if(x<y){
rec[i].x=y;
rec[i].y=x;
}else{
rec[i].x=x;
rec[i].y=y;
}
}
for(int i=0;i<t-1;i++){
if(rec[i].xu==-1)continue;
for(int j=i+1;j<t;j++){
if(rec[j].xu==-1)continue;
if(check(rec[i],rec[j])){
rec[j].xu=-1;
continue;
}else{
if(checkswap(rec[i],rec[j])){
swap(rec[i],rec[j]); //algorithm里的swap函数用这个更方便
}
}
}
}
for(int i=0;i<t;i++){
if(rec[i].xu==-1)
continue;
else{
cout<<rec[i].xu<<" "<<rec[i].x<<" "<<rec[i].y<<endl;
}
}
}
return 0;
}