求助,一直卡在80分,T两个点
查看原帖
求助,一直卡在80分,T两个点
931707
017_007楼主2023/7/11 19:45
#include<bits/stdc++.h>
#include<vector>

#define ll long long
#define maxn 200010

using namespace std;

int res,n,a,last,tot,ln,li,p[maxn],num[maxn],st;
int qian[maxn],hou[maxn];
vector<int>d[maxn];
bool out[maxn];

int main(){
	scanf("%d",&n);
	last=2;
	for (int i=1;i<=n;++i) {
		scanf("%d",&a);
		if (a!=last) num[++tot]=a,last=a;
		d[tot].push_back(i);
	}
	res=n;st=1;
	while (res>0){
		for (int i=1;i<=tot;++i) {
			if (out[i]) continue;
			printf("%d ",d[i][p[i]]);
			p[i]++;res--;
			if (!res) break;
			if (p[i]>=d[i].size()) out[i]=true;
		}
		printf("\n");
		li=0,ln=2;
		for (int i=1;i<=tot;++i) {
			if (out[i]) continue;
			if (num[i]==ln) {
				out[i]=true;
				for (int j=p[i];j<d[i].size();++j) d[li].push_back(d[i][j]);
			}
			else {
				li=i;ln=num[i];
			}
		}
	}
	return 0;
}
2023/7/11 19:45
加载中...