1083 List Grades

因为保证每个人的grade不同,所以从高到低排序就可以,不用考虑相同的情况。
不在区间内的,grade赋值-1,往后放,else满足条件的计数cnt++。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <bits/stdc++.h>
using namespace std;

struct student {
char name[11];
char id[11];
int grade;
};

bool cmp1(student a, student b) {
return a.grade > b.grade;
}

int main() {
int n, low, high, cnt = 0;
scanf("%d", &n);
vector<student> v(n);
for (int i = 0; i < n; i++) {
scanf("%s %s %d", &v[i].name, &v[i].id, &v[i].grade);
}
scanf("%d %d", &low, &high);
for (int i = 0; i < n; i++) {
if (v[i].grade < low || v[i].grade > high) {
v[i].grade = -1;
}
else {
cnt++;
}
}
sort(v.begin(), v.end(), cmp1);
if (cnt == 0) printf("NONE");
else {
for (int i = 0; i < cnt; i++) {
printf("%s %s\n", v[i].name, v[i].id);
}
}

return 0;
}