冒泡这些就通过不了
#include <stdio.h>
#include <stdbool.h>
int main()
{
int n,a[1000010];
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-1-i;j++)
{
int t;
if(a[j]>a[j+1])
{
t=a[j+1];
a[j+1]=a[j];
a[j]=t;
}
}
}
int pre=0;
int ans=0;
for(int i=0;i<n;i++)
{
if(a[i]==pre)
ans++;
else
{
ans=ans+(a[i]-pre)*6;
ans+=5;
ans++;
pre=a[i];
}
if(i==n-1)
ans=ans+a[i]*4;
}
printf("%d",ans);
}
下面我一开始写的没有排序的模拟也有两个超时间
#include <stdio.h>
int main()
{
int n,a[300000];
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
int ans=0;
int now=0;
int max=0;
for(int i=0;i<n;i++)
{
if(a[i]>max)
{
max=a[i];
}
}
while(true)
{
bool flag=true;
for(int i=0;i<n;i++)
{
if(a[i]==now)
{
if(flag)
ans+=5;
flag=false;
ans++;
}
}
if(now==max)
{
ans=ans+now*4;
break;
}
now++;
ans+=6;
}
printf("%d",ans);
}