考场代码,求估复杂度
查看原帖
考场代码,求估复杂度
261417
asasas楼主2021/10/24 10:59
#include <bits/stdc++.h>
using namespace std;
struct as{
	int id,ke;
}a[200005];
int main(){
//	freopen("fruit.in","r",stdin);
//	freopen("fruit.out","w",stdout);
	int n,q;
	scanf("%d",&n);
	for (int i=1;i<=n;i++){
		scanf("%d",&q);
		a[i].id=i;
		a[i].ke=q;
	}
	int len=n;
	//return 0;
	while(len>=1){
		for (int i=1;i<=len;i++){
			//printf("%d ",a[i].id);
		}
		//printf("\n%d\n",len);
		int cs=a[1].ke,la=1;
		for (register int i=2;i<=len;i++){
			if (a[i].ke!=cs){
				printf("%d ",a[la].id);
				a[la].ke=-1;
				la=i;
				cs=a[i].ke;
			}
		}
		printf("%d\n",a[la].id);
		int qwq=0;
		a[la].ke=-1;
		for (register int i=1;i<=len;i++){
			if (a[i].ke==-1){
				qwq++;
				continue ;
			}
			else {
				a[i-qwq].ke=a[i].ke;
				a[i-qwq].id=a[i].id;
			}
		}
		len-=qwq;
	}
		/*int cs=a[1],la=1,qwq=0;
		for (int i=1;i<=n;i++){
			if (a[i]!=-1){
				cs=a[i];
				la=i;
				break;
			}
		}
		//for (register int i=1;i<=n;i++) cout << a[i] << ' ';
		//cout << endl;
		for (int i=la+1;i<=n;i++){
			if (a[i]==-1) continue ;
			//cout << i << ' ';
			if (a[i]!=cs) {
				cs=a[i];
				a[la]=-1;
				qwq++;
				printf("%d ",la);
				la=i;
			}
		}
		len-=qwq+1;
		printf("%d\n",la);
		a[la]=-1;
	}*/
		return 0;
}
2021/10/24 10:59
加载中...