题解 | #成绩排序#
成绩排序
https://www.nowcoder.com/practice/0383714a1bb749499050d2e0610418b1
#include <iostream>
#include <variant>
#include<cstdio>
using namespace std;
#include<vector>
#include<algorithm>
#include<string>
class Person {
public:
Person(string name, int age, int pos) {
this->name = name;
this->age = age;
this->num = pos;
}
string name;
int age;
int num;
};
class Mycompare {
public:
bool operator()(const Person& val1, const Person& val2) {
if (val1.age != val2.age)
return val1.age > val2.age;
else return val1.num > val2.num;
}
};
class Myless {
public:
bool operator()(const Person& val1, const Person& val2) {
if (val1.age != val2.age)
return val1.age < val2.age;
else return val1.num > val2.num;
}
};
void MyPrint(const vector<Person>& v) {
for (vector<Person>::const_iterator it = v.begin(); it != v.end(); it++) {
cout << (*it).name << " " << (*it).age << endl;
}
}
void test01(int num, int select) {
// int num=0;
// cin>>num;
// bool select;
// cin>>select;
vector<Person> v;
for (; num > 0; num--) {
string name;
int age;
cin >> name;
cin >> age;
Person p = Person(name, age,num);
v.push_back(p);
}
if (select) {
sort(v.begin(), v.end(), Myless());
} else {
sort(v.begin(), v.end(), Mycompare());
}
MyPrint(v);
}
int main() {
int num;
int select;
while (scanf("%d%d", &num, &select) != EOF) {
test01(num, select);
}
return 0;
}
// 64 位输出请用 printf("%lld")
查看21道真题和解析
