CF1491A题解

· · 题解

题目传送门

题目大意

输入长度为n的数组,数组中只有01。然后给出q次判断:

  1. 输出数组中第k大的数字。

由于数组中只有01,所以就可以用一个计数器计1的个数,输出时再判断就可以了。

代码

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int main()
{
    int n,q,a[100001],ans=0;//ans用来记几个1,0就不用记了。 
    cin>>n>>q;
    for(int i=1;i<=n;++i)
        cin>>a[i],ans+=a[i];//记1的个数 
    for(int i=1;i<=q;++i)
    {
        int t,k;
        cin>>t>>k;
        if(t==1)
        {
            a[k]=1-a[k];
            if(a[k])
                ++ans;//1的数量+1 
            else
                --ans;//1的数量-1 
        }
        else
        {
            if(ans<k)
                cout<<0<<endl;//如果1的数量比k小,就输出0,否则输入1。 
            else
                cout<<1<<endl;
        }
    }
    return 0;//好习惯  
}