题意:给你N个数编号从1到N每个数代表座位个数,然后Q行每行in num的就是进来num个人你需要做的就是将这num个人放到编号最小但座位数大于等于num的地方,out num就是编号为num的地方人离开,那么你就可以在这坐人了,然后每个in输入输出你所选的地方,如果没有地方可选就输出-1;
这题用set做,需要知道set<pair<int,int> >用法
#include <bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
char str[10];
int a[100005];
int main()
{
int n,m,num;
scanf("%d%d",&n,&m);
set<pair<int ,int> >s;
set<pair<int,int> > ::iterator it;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
s.insert(make_pair(a[i],i));
}
while(m--)
{
cin>>str>>num;
if(str[0]=='i')
{
it=s.lower_bound(make_pair(num,0));
if(it==s.end())
{
printf("-1\n");
}
else
{
printf("%d\n",it->second);
s.erase(it);
}
}
else
{
s.insert(make_pair(a[num],num));
}
}
}