#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里逐语句出的答案是对的,运行就不对了