【題目敘述】http://codeforces.com/contest/1435/problem/D
#include <bits/stdc++.h>
using namespace std;
int n;
vector <int> v, ans;
stack <int> stk;
int main(){
cin >> n;
int a;
char c;
for (int i = 0; i < n*2; i++){
cin >> c;
if (c == '-'){
cin >> a;
v.push_back(-a);
}
else v.push_back(1);
}
bool flag = true;
while (v.size()){
a = v.back();
if (a < 0){
a = -a;
if (!stk.empty() && a > stk.top()){
flag = false;
break;
}
stk.push(a);
}
else{
if (stk.empty()){
flag = false;
break;
}
ans.push_back(stk.top());
stk.pop();
}
v.pop_back();
}
if (!flag){
cout << "NO\n";
return 0;
}
cout << "YES\n";
reverse(ans.begin(), ans.end());
for (int i:ans){
cout << i << " ";
}
cout << "\n";
}