题意:
刚开始有一个空集合,会往里添加q次数,每次加一个值,而且你可以使这个数任意加减x若干次每次添加后就查询当前最小的不属于这个集合的非负整数是什么。尽可能让这个最小的不属于这个数列的非负整数最大。
题解:
因为取摸运算让我们把这一个大集合通过模运算分成很多个小集合,每个小集合对应的数存在mod的关系。所以我们填满第一层就去填第二层…
#include <bits/stdc++.h>
using namespace std;
const int N=4e5+7;
int num[N];
int main()
{
int cnt=0;
int now=0;
int n,m; cin>>n>>m;
for(int i=1;i<=n;i++){
int tmp; scanf("%d",&tmp);
num[tmp%m]++;
while(num[now%m]){
num[now%m]--;
now++;
}
cout<<now<<endl;
}
}