首页 > 其他 > 详细

[2016-04-04][codeforces][639][A][Bear and Displayed Friends]

时间:2016-04-05 00:22:14      阅读:180      评论:0      收藏:0      [点我收藏+]
  • 时间: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,每加入一个数字就维护一次最大值

    1. #include <cstring>
    2. #include <cstdio>
    3. using namespace std;
    4. int a[150000 + 10];
    5. int main(){
    6. int n,k,q,b,c;
    7. scanf("%d%d%d",&n,&k,&q);
    8. for(int i = 1;i <= n ; ++i){
    9. scanf("%d",&c);
    10. a[i] = c;
    11. }
    12. int inq[10];
    13. memset(inq,0,sizeof(inq));
    14. for(int i = 0;i < q;++i){
    15. scanf("%d%d",&b,&c);
    16. if(b - 1){
    17. int flg = 1;
    18. for(int j = 0;j < k; ++j){
    19. if(inq[j] == c){
    20. flg = 0;break;
    21. }
    22. if(inq[j] == 0) break;
    23. }
    24. puts(flg?"NO":"YES");
    25. }else {
    26. int minpos = -1,curmin = a[c];
    27. for(int i = 0; i < k ; ++i){
    28. if(a[inq[i]] < curmin){
    29. curmin = a[inq[i]];
    30. minpos = i;
    31. }
    32. }
    33. if(minpos != -1) inq[minpos] = c;
    34. }
    35. }
    36. return 0;
    37. }




[2016-04-04][codeforces][639][A][Bear and Displayed Friends]

原文:http://www.cnblogs.com/qhy285571052/p/9d0ff80a51239c84b43cec3a13bd5862.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!