WA85求助
查看原帖
WA85求助
563958
dxrS楼主2022/8/16 16:20
#include<bits/stdc++.h>
#define ull unsigned long long
using namespace std;
const int maxn=1e7;
int n,thres,a[maxn+1],minx[maxn+1];
ull ans,k1,k2;
inline ull xorShift128Plus(){
	ull k3=k1,k4=k2;
	k1=k4,k3^=(k3<<23),k2=k3^k4^(k3>>17)^(k4>>26);
	return k2+k4;
}
inline void generate(){
	for(int i=1;i<=n;++i)
		a[i]=xorShift128Plus()%thres;
}
int main(){
	scanf("%d%llu%llu%d",&n,&k1,&k2,&thres);
	generate();
	minx[n]=n;
	for(int i=n-1;i;--i){
		minx[i]=minx[i+1];
		if(a[i]<a[minx[i]])
		    minx[i]=i;
	}
	int k=1;
	while(k<=n){
		swap(a[k],a[minx[k]]);
		k=minx[k]+1;
	}
	for(ull i=1;i<=n;++i)
		ans+=i*a[i];
	printf("%llu\n",ans);
	return 0;
}
2022/8/16 16:20
加载中...