【求助】TLE+2WA了,哪里错了啊
查看原帖
【求助】TLE+2WA了,哪里错了啊
475173
EntimE楼主2021/9/7 13:27

My代码

#include<bits/stdc++.h>
using namespace std;
int i,n,t=1,a[40005];
long long s=0;
void byx(int k)
{
    int tmp=a[k-1]+a[k];
    s+=tmp;
    for(i=k;i<t-1;i++)
    {
        a[i]=a[i+1];
    }
    t--;
    int j=0;
    for(j=k-1;j>0&&a[j-1]<tmp;j--)
    {
        a[j]=a[j-1];
    }
    a[j]=tmp;
    while(j>=2&&a[j]>=a[j-2])
	{
        int d=t-j;
        byx(j-1);
        j=t-d;
    }
}
int main()
{
    scanf("%d",&n);
    for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
    for(i=1;i<n;i++)
	{
        a[t++]=a[i];
        while(t>=3&&a[t-3]<=a[t-1])
        {
            byx(t-2);
        }
    }
    while(t>1)
    {
        byx(t-1);
    }
   printf("%lld\n",s);
}
2021/9/7 13:27
加载中...