救救可怜的萌新!
查看原帖
救救可怜的萌新!
356740
封禁用户楼主2020/7/16 20:04
#include <bits/stdc++.h>
#define MAXN 100000
using namespace std;
int n,h[MAXN+5];
int len2=1,d2[MAXN+5];
int len1=1,d1[MAXN+5];
int main(void) {
	cin>>n;
	for(int i=1;i<=n;i++) scanf("%d",&h[i]);
	d1[1]=h[1];
	d2[1]=h[1];
	for(int i=2;i<=n;i++) {
		if(h[i]>d1[len1]) d1[++len1]=h[i];
		else *lower_bound(d1+1,d1+len1+1,h[i])=h[i];
		if(h[i]<=d2[len2]) d2[++len2]=h[i];
		else *upper_bound(d2+1,d2+len2+1,h[i],greater<int>())=h[i];
	}
	cout<<len2<<endl<<len1<<endl;
}

为什么不对?题解跟我的几乎一样可是却AC,而我则听取蛙声一片

2020/7/16 20:04
加载中...