70分求助!!!
查看原帖
70分求助!!!
490793
nk2005_1楼主2021/10/30 15:32
#include<bits/stdc++.h>
using namespace std;
const int N=220000;
int a[N],n,cnt,p;
bool flag;
struct node{
	int l,r;
	int x;
};
node b[N];
int num;

int main(){
	//读入 
	freopen("fruit.in","r",stdin);
	scanf("%d",&n);
	for(int i=1;i<=n;i++)scanf("%d",&a[i]);
	
	//预处理 
	num=1;
	b[num].l=1;
	b[num].x=a[num];
	
	for(int i=2;i<=n;i++){ 
		if(a[i]!=a[i-1]){//之前的快 
			b[num].r=i-1;
			num++;
			b[num].l=i;
			b[num].x=a[i]; 
		}
	}
	b[num].r=n;
	b[0].x=-1;
	
	while(1){
		p=-1;//p表示当前取过的水果种类 
		flag=true;
		for(int i=1;i<=num;i++){
			if(b[i].l>b[i].r)continue;
			if(b[i].x!=p){
				printf("%d ",b[i].l);
				b[i].l++;
				p=b[i].x;
				flag=false;
			}
		}
		printf("\n");
		if(flag)break;
	}
	return 0;
}
2021/10/30 15:32
加载中...