


这是csp-j2020直播获奖,洛谷的一题,能不能讲解一下题并把代码贴出来看看
随着输入不断的排序,找出前w%的最低分数线
代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
void sort(int a[], int n)
{
int i, j, t;
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - 1 - i; j++)
{
if (a[j] < a[j + 1]) //从大到小排序
{
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
}
}
int max(int a, int b)
{
if (a > b) return a;
else return b;
}
int main()
{
int n, w;
int* sc; //存储成绩
int i, ps; //ps代表当前的获奖人数
scanf("%d %d", &n, &w);
sc = (int*)malloc(sizeof(int) * n);
for ( i = 0; i < n; i++)
{
scanf("%d", &sc[i]);
sort(sc, i + 1);
ps = max(1, (i + 1) * w / 100.0); //当前的获奖人数
if(i<n-1)
printf("%d ", sc[ps - 1]);
else
printf("%d", sc[ps - 1]);
}
return 0;
}