本地 AC,提交 RE 求调【悬2关】
查看原帖
本地 AC,提交 RE 求调【悬2关】
373198
WhileTrueRP楼主2024/4/24 17:27
#include<bits/stdc++.h>
using namespace std;
const int N = 4e5+5;
int a[N];
vector<int> v[N];
bool vis[N];
set<int> s;
int main(){
//	freopen("02_random_01.txt","r",stdin);
//	freopen("02_random_01.out","w",stdout);
	int n,m;
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
		if(a[i] < 0 && (-a[i]+i-1)/i < N){
			v[(-a[i]+i-1)/i].push_back(i);
		}else{
			v[0].push_back(i);
		}
	}
	for(auto x:v[0]){
		s.insert(x);
	}
	for(int i=1;i<=m;i++){
		for(auto x:v[i]){
			s.insert(x);
		}
		for(auto j=s.begin();j!=s.end();j++){
			if(1ll*a[*j] + 1ll**j * i >= 1ll*N){
				s.erase(s.find(*j));
			}else if(a[*j] + *j * i >= 0){
				vis[a[*j] + *j * i] = true;
			}
		}
		for(int j=0;;j++){
			if(!vis[j]){
				printf("%d\n",j);
				break;
			}
		}
		for(auto j=s.begin();j!=s.end();j++){
			if(1ll*a[*j] + 1ll**j * i >= 1ll*N){
				s.erase(s.find(*j));
			}else if(a[*j] + *j * i >= 0){
				vis[a[*j] + *j * i] = false;
			}
		}
	}
}
2024/4/24 17:27
加载中...