60分,4点TLE求教
查看原帖
60分,4点TLE求教
1147095
x3082楼主2025/1/20 14:57

#include<bits/stdc++.h>
using namespace std;
struct str{
	short kind;
	int kuai;
	bool used=0;
};
str s[200001];
int n,kuainumber=1;
char ss=' ';
int main(){
	scanf("%d",&n);
	int r=n;
	scanf("%hd",&s[1].kind);
	s[1].kuai=1;
	for(int i=2;i<=n;i++){
		scanf("%hd",&s[i].kind);
		if(s[i].kind!=s[i-1].kind) kuainumber++;
		s[i].kuai=kuainumber;
	}
	//1 1 0 0 1 1 1 0 1 1 0 0
	//  1   2   3 3     3   6
	//1 0 1 0 1 0 0 1 1 0 1 0
	while(r!=0){
		int a=1;
		for(int i=1;i<=n;i++){
			if(s[i].used){
				continue;
			}
			if(s[i].kuai==a){
				a++;
				printf("%d%c",i,ss);
				s[i].used=1;
				r--;//r=3
			}
		}
		int kuainumber2=2;
		int start=0;
		for(int i=2;i<=n;i++){
		   if(s[i].used){
		   	continue;
		   }else{
	           if(start==0){
	           	start=i;
	           	s[i].kuai=1;
	           	continue;
			   }
			   if(s[i].kind!=s[start].kind){//4
			   	s[i].kuai=kuainumber2;
			   	kuainumber2+=1;
			   	start=i;
			   }else{
			   	s[i].kuai=s[start].kuai;
			   }
		   }
		}
		cout<<endl;
	}
	return 0;
}
2025/1/20 14:57
加载中...