QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#822737#8050. Random PermutationEBeason#WA 1427ms4928kbC++141.1kb2024-12-20 16:06:572024-12-20 16:06:58

Judging History

你现在查看的是最新测评结果

  • [2024-12-20 16:06:58]
  • 评测
  • 测评结果:WA
  • 用时:1427ms
  • 内存:4928kb
  • [2024-12-20 16:06:57]
  • 提交

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;
long long upperdiv(long long a,long long b) {
	return (a+b-1)/b;
}

void solve(int x) {
//	l.clear();
//	int mxl=12*sqrt(upperdiv(1ll*a[x]*(n-a[x]),1ll*n))+600;
	int mxl=2000;
//	cout<<mxl<<'?'<<endl;
	l[0]=1;
	for(int i=x-1,tmp=0;i>=1 && (x-i)<=mxl;--i) {
		if(a[i]<a[x]) --tmp;
		else ++tmp;
		l[tmp]=l[tmp]+1;
	}
	ans+=1ll*l[0]*a[x]+1ll*l[1]*a[x];
	for(int i=x+1,tmp=0;i<=n && (i-x)<=mxl;++i) {
		if(a[i]<a[x]) --tmp;
		else ++tmp;
		ans+=1ll*l[-tmp]*a[x]+1ll*l[-tmp+1]*a[x];
	}
	l[0]=0;
	for(int i=x-1,tmp=0;i>=1 && (x-i)<=mxl;--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
Wrong Answer
time: 1427ms
memory: 4928kb

input:

4
1 4 2 3

output:

178844998149000

result:

wrong answer 1st numbers differ - expected: '22', found: '178844998149000'