#10 WA,求助
查看原帖
#10 WA,求助
540822
HotDogSeller楼主2022/8/3 14:27

其他都是AC

//#pragma GCC optimize(3)

#include<iostream>
#include<algorithm>
#include<queue>
#include<set>
#include<cmath>
#include<memory.h>
#include<map>
#include<iomanip>
#include<stack>

#define int long long
#define INF 0x7f

using namespace std;

inline int read() {
    bool op=1;
	char ch;
    
	while((ch=getchar())<'0'||ch>'9'){
        if(ch=='-'){
        	op=false;
		} 
    }
    
    int num=ch-'0';
    while((ch=getchar())>='0'&&ch<='9') {
        num=num*10+ch-'0';
    }
    
    return op?num:-num;
}

struct node{
	int f;
	int lc,rc;
	int d;
	int value;
};

node make_node(int b,int c){
	node lre;
	lre.d=c;
	lre.value=b;
	lre.lc=-1;
	lre.rc=-1;
	return lre;
}

int n,i,arr[300005];
int ma_d=0;
vector<node> v;

void build(int x,int num){
	
	//cout<<"v["<<x<<"].value="<<v[x].value<<" and for "<<num<<endl; 
	
	if(num<=v[x].value){
		if(v[x].lc==-1){
		//	cout<<"NEW!"<<endl;
			v[x].lc=v.size();
			v.push_back(make_node(num,v[x].d+1));
			ma_d=max(v[x].d+1,ma_d);
		}else{
			build(v[x].lc,num);
		}
	}else{
		if(v[x].rc==-1){
		//	cout<<"NEW!"<<endl;
			v[x].rc=v.size();
			v.push_back(make_node(num,v[x].d+1));
			ma_d=max(ma_d,v[x].d+1);
		}else{
			build(v[x].rc,num);
		}
	}
}

void traverse(int x){
	if(v[x].lc!=-1){
		traverse(v[x].lc);
	}
	if(v[x].rc!=-1){
		traverse(v[x].rc);
	}
	cout<<v[x].value<<endl;
}

signed main(){
	
	n=read();
	arr[1]=read();
	v.push_back(make_node(arr[1],1));
	
	for(i=2;i<=n;i++){
		arr[i]=read();
		build(0,arr[i]);
	}
	
	cout<<"deep="<<ma_d<<endl;
	
	traverse(0);
	
	return 0;
}
2022/8/3 14:27
加载中...