- 思路:双端队列+结构体模拟
#include <bits/stdc++.h>
using namespace std;
struct Task {
string name;
long long lel;
};
deque<Task> dq;
// 双端队列
long long n;
int main() {
cin >> n;
for (int i = 0; i < n; ++i) {
Task tmp;
// 小技巧
// string 这种输入方式遇到空格会停止
// 如果想遇到空格不停止,getline(cin, str)可以这样输入
cin >> tmp.name >> tmp.lel;
if (dq.empty()) dq.push_back(tmp);
else {
// 把简单的放在队头,难的放在队尾
if (tmp.lel < dq.front().lel) {
dq.push_front(tmp);
continue;
}
if (tmp.lel > dq.back().lel) {
dq.push_back(tmp);
}
}
}
int len = dq.size();
cout << len << endl;
while (len--) {
cout << dq.front().name << endl;;
dq.pop_front();
}
return 0;
}