这个代码大概能得几分
查看原帖
这个代码大概能得几分
222057
joy2010WonderMaker楼主2021/10/26 21:49
#include<bits/stdc++.h>
using namespace std;
int n,a[200005],tmp,pos,v;
struct node{
	int l,r,pre,nxt,data;
};
vector<node>lis;
int main(){
    //freopen("fruit.in","r",stdin);
    //freopen("fruit.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		scanf("%d",a+i);
	tmp=a[1],pos=1;
	lis.push_back({0,0,0,1,0});
	for(int i=2;i<=n;i++){
		if(a[i]!=tmp){
			lis.push_back({pos,i-1,lis.size()-1,lis.size()+1,tmp});
			tmp=a[i],pos=i;
		}
	}
	lis.push_back({pos,n,lis.size()-1,0,tmp});
	while(lis[0].nxt!=0){
		pos=lis[0].nxt,v=lis[lis[0].nxt].data;
		while(pos!=0){
			if(lis[pos].data==v){
				printf("%d ",lis[pos].l);
				lis[pos].l++,v^=1;
				if(lis[pos].l>lis[pos].r)
					lis[lis[pos].pre].nxt=lis[pos].nxt,lis[lis[pos].nxt].pre=lis[pos].pre;
			}
			pos=lis[pos].nxt; 
		}
		printf("\n");
	}
	return 0;
}
2021/10/26 21:49
加载中...