Logo aaa 的博客

博客

CF1491A题解

...
aaa
2025-12-01 12:54:07

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2021-03-07 12:38:20

题目传送门

题目大意

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

  1. $a_{x}=1$减$a_{x}$。
  2. 输出数组中第$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;\/\/好习惯  
} 

评论

暂无评论

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。