80pts求调
查看原帖
80pts求调
1280778
ljh789789楼主2024/9/13 20:48

不知道哪里错了

#include<bits/stdc++.h>
using namespace std;
const int maxn=100005;
int n,q[maxn],til;
struct tree{
	int lch,rch,data;
}c[maxn];
int read(){
	int ret=0,f=1;char ch=getchar();
	while(!isdigit(ch)){if(ch=='-')f=-f;ch=getchar();}
	while(isdigit(ch))ret=(ret<<3)+(ret<<1)+(ch&15),ch=getchar();
	return ret*f;
}
void LNR(int x){
	if(c[x].lch)LNR(c[x].lch);
	if(c[x].data>q[til])q[++til]=c[x].data;else *upper_bound(q+1,q+1+til,c[x].data)=c[x].data;
	if(c[x].rch)LNR(c[x].rch);
}
int main(){
	n=read();
	for(int i=1;i<=n;i++)c[i].data=read();
	for(int i=2;i<=n;i++){
		int fa=read(),x=read();
		if(!x)c[fa].lch=i;else c[fa].rch=i;
	}
	q[0]=-1;LNR(1);
	printf("%d\n",n-til);
	return 0;
}
2024/9/13 20:48
加载中...