为什么这个代码只得了60?其他全TLE,求助
#include<bits/stdc++.h>
using namespace std;
struct nod{
bool num;int f,e;
};
struct nod s[200010];
int n,start=1,start2;
bool d;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&s[i].num);
s[i].f=i-1;s[i].e=i+1;
}
s[0].e=1;s[n+1].f=n;
while(1){
d=s[s[0].e].num;
start=s[0].e;
start2=start;
while(1){
if(d!=s[start2].num){
s[s[start].f].e=s[start].e;
s[s[start].e].f=s[start].f;
printf("%d ",start);
d=s[start2].num;
start=start2;
}
if(s[start].e==s[start].f)break;
start2=s[start2].e;
if(start2==n+1){
s[s[start].f].e=s[start].e;
s[s[start].e].f=s[start].f;
printf("%d ",start);
break;
}
}
printf("\n");
if(s[start].e==s[start].f)break;
}
}