QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#448570#8050. Random PermutationliqingyangWA 0ms5656kbC++14805b2024-06-19 19:47:582024-06-19 19:48:00

Judging History

This is the latest submission verdict.

  • [2024-06-19 19:48:00]
  • Judged
  • Verdict: WA
  • Time: 0ms
  • Memory: 5656kb
  • [2024-06-19 19:47:58]
  • Submitted

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=n/5/sqrt(max(1,abs(p[i]-(n>>1))));
		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: 0ms
memory: 5656kb

input:

4
1 4 2 3

output:

10

result:

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