求助 P2171 不知道为什么RE了3个点
查看原帖
求助 P2171 不知道为什么RE了3个点
579489
Vigilant_Yaksha楼主2022/11/18 14:46
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
#include<cstdlib>
#include<iomanip>
#include<queue>
#include<list>
#include<math.h>
#include<cctype>
#include<map>
#include<stack>
#define maxn 200001000
using namespace std;
typedef long long ll;
typedef unsigned long wf;
typedef unsigned int u32;
typedef unsigned long long u64;
int tree[maxn]; 
int va[maxn],deep;
int root,n,bh=1,a,maxx=-10;
void push(int x){
	int p=1;
	while(tree[p]){
		if(x<=tree[p])p*=2;
		else{
			p=p*2+1;
		}
	}
	tree[p]=x;
}
void PostOrder(int x,int deep){
	if(tree[x*2])
		PostOrder(x*2,deep+1);
	if(tree[x*2+1])
		PostOrder(x*2+1,deep+1);
	va[bh++]=tree[x];
	if(tree[x*2]==0||tree[x*2+1]==0)
	maxx=max(deep,maxx);
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
    	cin>>a;
		push(a);
	}
//	for(int i=1;i<=n*5;i++){
//		cout<<tree[i]<<" ";
//	}
	PostOrder(1,1);
	cout<<"deep="<<maxx<<"\n";
	for(int i=1;i<bh;i++){
		cout<<va[i]<<"\n";
	}
    return 0;
}

感谢

2022/11/18 14:46
加载中...