#include<bits/stdc++.h>
using namespace std;

// 复合类型数据
struct Stu
{
	string name;
	int yw, sx, yy;
};
Stu xs[10010];

struct Name
{
	string name1, name2;
};

Name peidui[1000000];
int cnt;

bool check(int i, int j)
{
	int s1 = xs[i].yw + xs[i].sx + xs[i].yy;
	int s2 = xs[j].yw + xs[j].sx + xs[j].yy;
	if (abs(s1 - s2) > 10) return false;
	if (abs(xs[i].yw - xs[j].yw) > 5) return false;
	if (abs(xs[i].sx - xs[j].sx) > 5) return false;
	if (abs(xs[i].yy - xs[j].yy) > 5) return false;
	return true;
}

bool cmp(Name x, Name y) // x.name1 x.name2  y.name1 y.name2
{
	if (x.name1 == y.name1) return x.name2 < y.name2;
	return x.name1 < y.name1;
}

int main()
{
	int n; 
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		cin >> xs[i].name >> xs[i].yw >> xs[i].sx >> xs[i].yy;
	}
	for (int i = 1; i <= n - 1; i++)
	{
		for (int j = i + 1; j <= n; j++)
		{
			if (check(i, j) == true) // 表示i号学生和j号学生是旗鼓相当对手
			{
				peidui[cnt].name1 = xs[i].name;
				peidui[cnt].name2 = xs[j].name;
				if (peidui[cnt].name2 < peidui[cnt].name1) 
					swap(peidui[cnt].name1, peidui[cnt].name2);
				cnt++;
			}
		}
	}
	
	sort(peidui, peidui + cnt, cmp);
	
	for (int i = 0; i < cnt; i++)
		cout << peidui[i]. name1 << " " << peidui[i].name2 << endl;
	
	return 0;
}

1 条评论

  • @ 2025-4-26 16:54:52
    bool x(int a1,int a2){
    	if(a1<a2) return 0;
    	else return 1;
    }
    
    • 1

    信息

    ID
    242
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    33
    已通过
    13
    上传者