输入样例1:
5 9 3 2
1 1
2 1
3 1
4 1
3 0
1 0
1 1
5 1
2 1
输出样例1:
3
2 3 4
输入样例2:
2 3 2 2
1 0
2 0
1 0
输出样例2:
0
简单模拟,维护两个条件即可。
#include<bits/stdc++.h>
using namespace std;
const int N=3e5+10;
int n,m,a,b,flag[N],sum,p;
set<int>ans;
int main(){
cin>>n>>m>>a>>b;
for(int i=0,x,y;i<m;i++){
scanf("%d%d",&x,&y);
if(y){
sum++,flag[x]++;
if(sum>=a||flag[x]>=b) ans.insert(x);
}
else sum=0,flag[x]=0;
}
if(!ans.size()){
cout<<0;
return 0;
}
cout<<ans.size()<<endl;
for(auto it:ans){
if(!p) p=1;
else cout<<" ";
cout<<it;
}
return 0;
}