-
Notifications
You must be signed in to change notification settings - Fork 0
/
1115.cpp
47 lines (47 loc) · 1.02 KB
/
1115.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn=1e3+5;
struct ty{
int key;
int l,r;
}node[maxn];
int n,tot,a;
int cnt[maxn];
void build(int now,int x,int f,bool left,int layer){
if(now==-1){
node[++tot].key=x;node[tot].l=node[tot].r=-1;
if(left) node[f].l=tot;
else node[f].r=tot;
cnt[layer]++;
return ;
}
if(x<=node[now].key){
build(node[now].l,x,now,1,layer+1);
}else{
build(node[now].r,x,now,0,layer+1);
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cin>>n;cin>>a;
node[++tot].key=a;node[tot].l=node[tot].r=-1;cnt[1]=1;
for(int i=2;i<=n;i++){
cin>>a;
build(1,a,0,0,1);
}
if(cnt[2]==0){
cout<<cnt[1]<<" + 0 = "<<cnt[1]<<'\n';
return 0;
}
int n1=cnt[2],n2=cnt[1];
int idx=3;
while(true){
if(!cnt[idx]) break;
n2=n1;n1=cnt[idx];
idx++;
}
cout<<n1<<" + "<<n2<<" = "<<(long long )(n1+n2)<<'\n';
return 0;
}