D. Shurikens
自己感觉差不多写了个模拟过了59组数据。
明显这题可能和栈扯上关系,因为很想括号匹配求卡特兰数的形式
看了大佬博客后发现真的和栈有关于是学习了一波。
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<set>
#include<map>
#include<cmath>
#include<stack>
#include<queue>
#include<random>
#include<bitset>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_map>
#include<unordered_set>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N=200010;
int ans[N];
stack<int> q;
int idx,n;
int main()
{IO;int T=1;//cin>>T;while(T--){cin>>n;bool ok=1;for(int i=1;i<=2*n;i++){char op;cin>>op;if(op=='+') q.push(++idx);else{int x;cin>>x;if(q.empty())ok=0;else{int id=q.top();q.pop();ans[id]=x;if(ans[id]<ans[id+1]) ok=0;//如果先出来的人比你大说明存在问题}}}if(!ok) cout<<"NO\n";else{cout<<"YES\n";for(int i=1;i<=n;i++) cout<<ans[i]<<' ';cout<<'\n';}}return 0;
}