时间:2016-04-04 12:38:53 星期一
题目编号:[2016-04-04][codeforces][639][A][Bear and Displayed Friends]
题目大意:有n朋友,第i个朋友有亲密度ti,有q次命令,1 id表示编号为id的朋友上线,2 id表示是否在线,且亲密度在前k个,输出结果
分析:可以发现k最大为0,只需要维护前k个最大值就ok,每加入一个数字就维护一次最大值
#include <cstring>#include <cstdio>using namespace std;int a[150000 + 10];int main(){ int n,k,q,b,c; scanf("%d%d%d",&n,&k,&q); for(int i = 1;i <= n ; ++i){ scanf("%d",&c); a[i] = c; } int inq[10]; memset(inq,0,sizeof(inq)); for(int i = 0;i < q;++i){ scanf("%d%d",&b,&c); if(b - 1){ int flg = 1; for(int j = 0;j < k; ++j){ if(inq[j] == c){ flg = 0;break; } if(inq[j] == 0) break; } puts(flg?"NO":"YES"); }else { int minpos = -1,curmin = a[c]; for(int i = 0; i < k ; ++i){ if(a[inq[i]] < curmin){ curmin = a[inq[i]]; minpos = i; } } if(minpos != -1) inq[minpos] = c; } } return 0;}