
http://codeforces.com/contest/1435/problem/D

样例解释
题目大意:
给一个N,代表有N个物体,编号1->N。
接下来是2*N行,遇到 + 代表将某一物品放到桌子上,遇到减号和数字,代表从桌子上把编号为这个数字的物品拿走了。
问在每一个加号后面能否加上一个数字 ,代表将序号为这个数字的物品放到桌子上,使得这个拿东西和放东西的操作序列符合(每次拿走物品都是拿走桌子上当前序号最小的物品,并且拿东西的时候有东西可拿)这个条件,如果可以输出YES,输出数字序列,如果不可以输出NO即可。
思考过程:
先不考虑每次拿东西是否是拿的最小的,先判断每次拿东西都有东西可拿,并将每次拿的东西的序号放到距离本次操作最近的加号的后面。
如果每次都有东西可拿在判断每次拿的东西是否是最小的,判断方法是遇到加号将数字放到集合中,遇到减号判断集合中的最小元素是否和当前数字相等,如果相等将其从集合中删除。循环进行此操作。如果能循环操作到最后一位都没有问题。输出加号对应的答案数组即可。
代码来源仍然来源于tourist(咕咕咕)

AC代码