请大佬帮忙看一下,样例7和8超时
查看原帖
请大佬帮忙看一下,样例7和8超时
1251707
chenxiyu20110627楼主2024/9/30 00:12
#include <bits/stdc++.h>
using namespace std;
int a[10000001]; 
int f[10000001];
int b[10000001];
int main() {
int n,i,j,s=1,m,k,s1,s2;
cin>>n;
	f[1]=1;
	b[0]=1;
for(i=1;i<=n;i++)
{
	cin>>a[i];
	if(i>1&&a[i]!=a[i-1])
	{s++;
		f[s]=i;//计录块的位置 
	}
}
s1=s;
for(i=1;i<=s;i++)
{
	b[i]=f[i+1]-f[i];//每个块的大小 
}
b[s]=n-f[s]+1; 
while(s1>0)
{s2=n+1; 
for(i=1;i<=s;i++)
{
	if(s2==a[f[i]])//判定会不会因为前一个块被取完,导致块合并 
	{
		f[i]=f[i];//没意义,瞎写的,意义在else 
	}
	else
     if(b[i]>0)
     {
     	cout<<f[i]<<" ";
     	s2=a[f[i]];
     	f[i]++;
     	b[i]--;
	 }
	 else
	if(b[i]==0)
	{
		s1--;
		b[i]--;
	}
}cout<<endl;
}
}
2024/9/30 00:12
加载中...