队列代码,第8点TLE,请求大佬帮助
查看原帖
队列代码,第8点TLE,请求大佬帮助
1255860
zyc231754zwc楼主2024/10/22 21:34

用题目的标准输入输出流还是超时

#include<bits/stdc++.h>
using namespace std;
struct zu{
	queue<int> px;
	int zl;
}z[200005];
int n,la,a;
int main(){
	z[0].zl=-1;
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&a);
		if(a!=z[la].zl){
			la++;
			z[la].px.push(i);
			z[la].zl=a;
		}else{
			z[la].px.push(i);
		}
	}
	while(la>=1){
	//for(int i=1;i<=2;i++){
		for(int i=1;i<=la;i++){
			printf("%d ",z[i].px.front());
			//cout<<z[i].px.front()<<" ";
			z[i].px.pop();
		}
		printf("\n");
		while(1){
			int s=la;
			for(int i=1;i<=s;i++){
				if(z[i].px.empty()){
					s--;
					for(int j=i;j<=s;j++){
						z[j].zl=z[j+1].zl;
						swap(z[j].px,z[j+1].px);
					}
				}
			}
			for(int i=1;i<s;i++){
				if(z[i].zl==z[i+1].zl){
					while(!z[i+1].px.empty()){
						z[i].px.push(z[i+1].px.front());
						z[i+1].px.pop();
					}
					s--;
					for(int j=i+1;j<=s;j++){
						z[j].zl=z[j+1].zl;
						swap(z[j].px,z[j+1].px);
					}
				}
			}
			if(s==la){
				break;
			}
			la=s;
		}
	}
	return 0;
}
2024/10/22 21:34
加载中...