a数组开2e6就可以了 @[__rnfmabj__](/user/914275)
by Sun_Email @ 2023-07-30 19:56:04
开2e6了之后就只AC一个点了......@[Sun_Email](/user/566451)
by __rnfmabj__ @ 2023-07-30 20:02:32
我自己开2e6过的。。。
我再看看
@[__rnfmabj__](/user/914275)
by Sun_Email @ 2023-07-30 20:03:34
等下
add(int k)
这个函数不能只传k,要再传一个编号
by Sun_Email @ 2023-07-30 20:05:21
只传k把k当编号当然WA
by Sun_Email @ 2023-07-30 20:05:44
@[__rnfmabj__](/user/914275)
by Sun_Email @ 2023-07-30 20:06:51
```
#include <bits/stdc++.h>
using namespace std;
const int N=1e7;
int n,ans=0;
struct tree{
int data,l,r;
}a[N];
void add(int k,int step){
if (k>a[step].data){
if (a[step].r==0){
a[step].r=k;
a[a[step].r].data=k;
return ;
}
add(k,a[step].r);
}
if (k<a[step].data){
if (a[step].l==0){
a[step].l=k;
a[a[step].l].data=k;
return;
}
add(k,a[step].l);
}
}
void sc(int k){
if (a[k].l!=0){
sc(a[k].l);
}
if (a[k].r!=0){
sc(a[k].r);
}
cout<<a[k].data<<endl;
}
void dfs(int step,int now){
if (a[now].l==0 && a[now].r==0){
ans=max(ans,step);
return ;
}
if (a[now].l) dfs(step+1,a[now].l);
if (a[now].r) dfs(step+1,a[now].r);
}
int main(){
cin>>n;
for (int i=1;i<=n;i++){
int k;
cin>>k;
if (i==1){
a[i].data=k;
continue;
}
add(k,1);
}
dfs(1,1);
cout<<"deep="<<ans<<endl;
sc(1);
return 0;
}
```
还是MLE......
by __rnfmabj__ @ 2023-07-31 18:58:57
@[Sun_Email](/user/566451)
by __rnfmabj__ @ 2023-07-31 18:59:25
看到了
by Sun_Email @ 2023-07-31 19:04:11
@[__rnfmabj__](/user/914275)
改了吗
by Sun_Email @ 2023-07-31 19:06:05