本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2021-03-07 12:38:20
题目传送门
题目大意
输入长度为n的数组,数组中只有0和1。然后给出q次判断:
- $a_{x}=1$减$a_{x}$。
- 输出数组中第$k$大的数字。
由于数组中只有0和1,所以就可以用一个计数器计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;\/\/好习惯
}

鲁ICP备2025150228号