60分求助
查看原帖
60分求助
1005879
xiongpapa楼主2023/10/15 13:59
#include <stdio.h>
typedef struct player
{
	int num;
	int grades;
}player;
player players[5005];

void sort(player P[], int left, int right)
{
	int i, j;
	player tmp;
	i = left; j = right;
	tmp = P[left];
	if (i > j)
		return;
	while (i != j)
	{
		while (P[j].grades <= tmp.grades && j > i)
			j--;
		while (P[i].grades >= tmp.grades && j > i)
			i++;
		if (j > i)
		{
			player temp = players[i];
			players[i] = players[j];
			players[j] = temp;
		}
	}
	P[left] = P[i];
	P[i] = tmp;
	sort(P, left, i - 1);
	sort(P, i + 1, right);
}

int main()
{
	int arr[1000];
	int m, n, num, av;
	scanf("%d %d", &n, &m);
	m = m * 1.5;
	for (int i = 0; i < n; i++)
		scanf("%d %d", &players[i].num, &players[i].grades);
	sort(players, 0, n - 1);
	for (int i = 0; i < n; i++)
	{
		for (int j = i; j < n-i; j++)
		{
			if (players[i].grades == players[j].grades && players[i].num > players[j].num)
			{
				int a = players[i].num;
				players[i].num = players[j].num;
				players[j].num = a;
			}
		}
	}
	av = players[m - 1].grades;
	num = m;
	for (int i = m; i < n; i++)
	{
		if (players[i].grades == av)
			num++;
		else
			break;
	}
	printf("%d %d\n", av, num);
	for (int i = 0; i < num; i++)
	{
		printf("%d %d\n", players[i].num, players[i].grades);
	}
	return 0;
}  

第三个点在VS里逐语句出的答案是对的,运行就不对了

2023/10/15 13:59
加载中...