QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#448586#8050. Random PermutationliqingyangWA 1ms10112kbC++14816b2024-06-19 19:54:562024-06-19 19:54:56

Judging History

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

  • [2024-06-19 19:54:56]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:10112kb
  • [2024-06-19 19:54:56]
  • 提交

answer

#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int n,p[300010],P[300010];
int F[600010],*f=F+300005;
int G[600010],*g=G+300005;
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>p[i];
		P[p[i]]=i;
	}
	long long ans=0;
	for(int i=1;i<=n;i++)
	{
		int lim=1.5e4*n/3e5/pow(max(1,abs(p[i]-(n>>1))),0.4);
		int j=i,k=i,s1=0,s2=0,sum=1;
		f[0]=g[0]=1;
		while((j>1||k<n)&&abs(s1)<lim&&abs(s2)<lim)
		{
			if(j>1)
			{
				j--;
				f[s1+=p[j]<p[i]?-1:1]++;
				sum+=g[s1]+g[s1-1];
			}
			if(k<n)
			{
				k++;
				g[s2+=p[k]<p[i]?1:-1]++;
				sum+=f[s2]+f[s2+1];
			}
		}
		ans+=(long long)p[i]*sum;
		memset(f-(i-j),0,(i-j<<1)+1<<2);
		memset(g-(k-i),0,(k-i<<1)+1<<2);
	}
	cout<<ans<<endl;
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 1ms
memory: 10112kb

input:

4
1 4 2 3

output:

10

result:

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