70分求助(T0WA3个,T1WA1个)
查看原帖
70分求助(T0WA3个,T1WA1个)
564225
dontwannacry楼主2022/9/10 22:16

测试的时候大数据能过,小数据反而过不了,就离谱......

这是代码:

#include<bits/stdc++.h>
using namespace std;
unsigned long long N,M,V,a[2000010],add[2000010],b[2000010],x,k,ans1,ans2;
int find_j(int x){
	if(a[x] == b[x-1]){
		if(a[x] > a[add[x-1]])return x;
		else return add[x-1];
	}
	if(a[x] > b[x-1])return x;
	else return add[x-1];
}
int main(){
	ios::sync_with_stdio(false);
	cin>>N>>M>>V;
	for(int i = 1;i <= N;++i){
		cin >> a[i];
	}
	for(int i = 1;i <= N;++i){
		b[i] = max(b[i-1],a[i])+V;
		add[i] = find_j(i);
	}
	while(M--){
		cin >> x >> k;
		if(x+k > N){
			continue;
		}
		unsigned long long ans;
		if(add[x+k-1] > x)ans = b[x+k-1]+1-V*k,ans;
		else ans = b[x-1];
		ans1 = ans1^ans;
		ans2 = ans2+ans;
	}
	cout << ans1 <<" "<< ans2;
	return 0;
}

find_j()是用来找原序列下第i次操作选中的j的

2022/9/10 22:16
加载中...