题目描述:
直接上代码:
#include <iostream>
#include <string>
#include <vector>
#include <stack>
#include <algorithm>
#include <sstream>
#include <set>
#include <map>
#include<cmath>
class member{
public:
member() :name(""), id(0), state(0){};
member(string _name, int _id, int _state = 0){
name = _name;
id = _id;
state = _state;
}
bool operator>(const member& other){
if (this->state && !other.state)
return true;
if (!this->state && other.state)
return false;
if (this->id != other.id)
return this->id > other.id;
else
return this->name < other.name;
}
void setState(int _state){
state = _state;
}
string pushName(){
return name;
}
private:
string name;
int id;
int state;
};
int main()
{
//初始化成员,将他们放在一个map里,map的key是名字
map <string, member> mem;
string name;
int id;
int state;
int N;
cin >> N;
for (int i = 0; i < N; i++){
cin >> name >> id;
mem[name] = member(name, id);
}
//成员变换状态
int M;
cin >> M;
for (int i = 0; i < M; i++){
cin >> name >> state;
mem[name].setState(state);
}
vector<member> haha;
for (pair<string, member> pa : mem){
haha.push_back(pa.second);
}
//排序
sort(haha.begin(), haha.end());
reverse(haha.begin(), haha.end());
for (member a : haha){
cout << a.pushName() << endl;
}
return 0;
}