民间数据70分
查看原帖
民间数据70分
222057
joy2010WonderMaker楼主2021/10/23 17:46

代码:

#include<bits/stdc++.h>
using namespace std;
int n,a[200005],cnt;
struct node{
	int id,x;
}b[200005];
bool vis[200005];
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);
	while(cnt<n){
		int sum=0,pos;
		for(int i=1;i<=n;i++)
			if(!vis[i])
				b[++sum].x=a[i],b[sum].id=i;
		pos=b[1].id;
		for(int i=1;i<=sum;i++){
			if(b[i].x!=b[i+1].x||i==sum){
				vis[pos]=true;
				cnt++;
				printf("%d ",pos);
				pos=b[i+1].id;
			}
		}
		printf("\n");
	}
	return 0;
}

这应该是 O(n2)O(n^2) 的,但过了70分,建议加上一组Hack数据,即全0或全1。

2021/10/23 17:46
加载中...