手写链表也用了,89为什么超时
查看原帖
手写链表也用了,89为什么超时
119265
渣渣炜楼主2023/12/13 18:31
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1000000;
struct block{
	int pre,nxt;
	int l,r,num;//起点和终点
}a[MAXN];
int main(){
	int n;
	scanf("%d",&n);
	a[0]=(block){0,0,0,0,2};
	int index=0;
	int cnt=0;
	for(int i=1,pre=2;i<=n;i++){//n个水果
		int num;
		scanf("%d",&num);
		if(index==0||num!=pre){
			index++;
			a[index]={a[index-1].nxt,index,i,i,num};
			a[index-1].nxt=index;	
		}
		else
			a[index].r++;
		pre=num;
	}
	a[index].nxt=-1;
	while(cnt<n){
		for(int i=0;i!=-1;i=a[i].nxt){
			if(a[i].num!=2&&(i==1||a[i].num!=a[a[i].pre].num)){
				printf("%d ",a[i].l);
				cnt++;
				a[i].l++;
			}
		}		
		putchar('\n');
		for(int i=0;i!=-1;i=a[i].nxt)
			if(a[i].l>a[i].r){
				a[a[i].pre].nxt=a[i].nxt;
				a[a[i].nxt].pre=a[i].pre;
				a[i].num=2;
		}
	}
	return 0;
}
2023/12/13 18:31
加载中...