QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#822805#8050. Random PermutationEBeason#RE 0ms0kbC++141.1kb2024-12-20 16:42:272024-12-20 16:42:32

Judging History

This is the latest submission verdict.

  • [2024-12-20 16:42:32]
  • Judged
  • Verdict: RE
  • Time: 0ms
  • Memory: 0kb
  • [2024-12-20 16:42:27]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;
#pragma GCC optimize(1, 2, 3, "Ofast", "inline")

int n;
int a[300300];
long long ans=0;
//unordered_map<int,int> l;
struct likemap {
	int ma[300300];
	int& operator [] (int x) {
		return ma[x+100000];
	}
}l;
int getl(double p) {
	if(abs(0.5-p)<=1e-9) return n;
	else return log(5e-7) / (log(2)+log(p)/2+log(1-p)/2);
}
void solve(int x) {
//	l.clear();
	int mxl=getl(1.0*a[x]/n);
	l[0]=1;
	int ll=max(1,x-mxl),rr=min(n,x+mxl);
	for(int i=x-1,tmp=0;i>=ll;--i) {
		if(a[i]<a[x]) --tmp;
		else ++tmp;
		l[tmp]=l[tmp]+1;
	}
	long long res=0;
	res+=1ll*l[0]+1ll*l[1];
	for(int i=x+1,tmp=0;i<=rr;++i) {
		if(a[i]<a[x]) --tmp;
		else ++tmp;
		res+=1ll*l[-tmp]+1ll*l[-tmp+1];
	}
	ans+=res*a[x];
	l[0]=0;
	for(int i=x-1,tmp=0;i>=ll;--i) {
		if(a[i]<a[x]) --tmp;
		else ++tmp;
		l[tmp]=0;
	}
}
int main() {
//	scanf("%d",&n);
	n=300000;
	for(int i=1;i<=n;++i) {
//		scanf("%d",&a[i]);
		a[i]=i;
	}
//	random_shuffle(a+1,a+n+1);
	for(int i=1;i<=n;++i) {
		solve(i);
//		if(i%10000==0) cout<<i<<endl;
	}
	printf("%lld\n",ans);
	return 0;
}
/*
4
1 4 2 3
*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Runtime Error

input:

4
1 4 2 3

output:


result: