TLE求助
查看原帖
TLE求助
482610
Mortidesperatslav楼主2023/7/28 11:45

之前写的代码,现在改不出来/kk

#include<bits/stdc++.h>
using namespace std;
struct node{
	int prev,next,value;
};
node lis[200005];
int n,k[200005],q,head,tail;
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	cin>>n;
	for(register int i=0;i<n;i++){
		lis[i].next=i+1;
		lis[i].prev=i-1;
		cin>>lis[i].value;
	}
	lis[n-1].next=-1;
	head=0;tail=n-1;
	q=n;
	while(q){
		memset(k,0,sizeof(k));
		register int p=0;
		for(register int i=head;i!=-1;i=lis[i].next){
			if(lis[i].prev==-1||lis[i].value!=lis[lis[i].prev].value){
				cout<<i+1<<" ";
				q--;
				k[p++]=i;
			}
		}
		for(register int i=0;i<p;i++){
			if(k[i]==head)head=lis[k[i]].next;
			if(k[i]==tail)tail=lis[k[i]].prev;
			lis[lis[k[i]].prev].next=lis[k[i]].next;
			lis[lis[k[i]].next].prev=lis[k[i]].prev;
		}
		cout<<"\n";
	}
}
2023/7/28 11:45
加载中...