如题,样例过了,3-10点WA
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int n;
string ans[105];
struct node{
int start, end;
string name, fac;
}arr[105];
bool cmp(node a, node b){
if (a.start == b.start) return a.end < b.end;
else return a.start < b.start;
}
int main(){
cin >> n;
for (int i = 1; i <= n; i++){
cin >> arr[i].name >> arr[i].fac;
if (arr[i].fac == "UP"){
arr[i].start = i + 1;
arr[i].end = n;
}else if (arr[i].fac == "DOWN"){
arr[i].start = 1;
arr[i].end = i - 1;
}else{
arr[i].start = i;
arr[i].end = i;
}
}
sort(arr + 1, arr + n + 1, cmp);
for (int i = 1; i <= n; i++){
ans[i] = "";
}
for (int i = 1; i <= n; i++){
if (arr[i].start == arr[i].end && ans[i] == ""){
ans[i] = arr[i].name;
}else if (arr[i].end == i && ans[i] == ""){
ans[i] = arr[i].name;
}else if (arr[i].start <= i && arr[i].end >= i && ans[i] == ""){
ans[i] = arr[i].name;
}
}
for (int i = 1; i <= n; i++){
cout << ans[i] << endl;
}
return 0;
}