数据真强。我全排列枚举都对了
#include<bits/stdc++.h>
using namespace std;
int n,a[105];
struct pi{
string a,b;
}s[105];
bool f[105];
void dfs(int k){
if(k == n + 1){
for(int i = 1 ; i <= n ; i ++){
if(s[i].b == "UP"){
if(a[i] <= i){
return;
}
}
if(s[i].b == "DOWN"){
if(a[i] >= i){
return;
}
}
if(s[i].b == "SAME"){
if(a[i] != i){
return;
}
}
}
for(int i = 1 ; i <= n ; i ++){
for(int j = 1 ; j <= n ; j ++){
if(a[j] == i){
cout << s[j].a << endl;
break;
}
}
}
exit(0);
}
for(int i = 1 ; i <= n ; i ++){
if(!f[i]){
if(s[k].b == "UP" && i <= k){
continue;
}
if(s[k].b == "DOWN" && i >= k){
continue;
}
if(s[k].b == "SAME" && i != k){
continue;
}
a[k] = i;
f[i] = 1;
dfs(k + 1);
f[i] = 0;
}
}
}
int main(){
cin >> n;
for(int i = 1 ; i <= n ; i ++){
cin >> s[i].a >> s[i].b;
}
dfs(1);
return 0;
}