社区讨论
60分求助
P1068[NOIP 2009 普及组] 分数线划定参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lo12mrf0
- 此快照首次捕获于
- 2023/10/22 14:11 2 年前
- 此快照最后确认于
- 2023/11/02 13:40 2 年前
C
#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里逐语句出的答案是对的,运行就不对了
回复
共 0 条回复,欢迎继续交流。
正在加载回复...