题目链接:http://codeforces.com/contest/658/problem/B
思路:本来想着如果sort过不了就用冒泡的,因为在已经排序好的状态下,加入一个数,冒泡只需要冒一次,但是它过了,那就算了吧.......
#include<string.h>
#include<stdio.h>
#include<map>
#include<algorithm>
using namespace std;
int n,k,m;
int A[150010],q[150010];
map<int,int>mp,f;
int main()
{
scanf("%d%d%d",&n,&k,&m);
for(int i=1;i<=n;i++)
{
scanf("%d",&A[i]);
f[A[i]]=i;
}
int x,id,l=0,r=0;
while(m--)
{
scanf("%d%d",&x,&id);
if(x==1)
{
if(r<k)
{
q[r++]=A[id];
mp[id]=1;
}
else
{
q[r]=A[id];
mp[id]=1;
sort(q,q+r+1,greater<int>());
mp[f[q[r]]]=0;
}
}
else
{
printf("%s\n",mp[id]==1?"YES":"NO");
}
}
}