求助!16~20WA
查看原帖
求助!16~20WA
540018
SNRJ楼主2022/7/30 15:28
#include <bits/stdc++.h>
using namespace std;
long long n,mid,l,r;
long long maxn,total=0,a[50010],b[50010];
int main(){
	while(scanf("%d",&a[++n])!=EOF); 
	n--;
	for(long long i=1;i<=n;i++){
		l=0; r=total;
		while(l<r){
			mid=(l+r+1)>>1;
			if(a[i]>b[mid]){r=mid-1;}
			else {l=mid;}
		}
		total=max(total,r+1);
		b[r+1]=a[i];
	}
	printf("%lld\n",total);
	memset(b,0,sizeof(b)); total=0;
	for(long long i=1;i<=n;i++){
		l=0; r=total;
		while(l<r){
			mid=(l+r+1)>>1;
			if(a[i]<=b[mid]){r=mid-1;}
			else {l=mid;}
		}
		total=max(total,r+1);
		b[r+1]=a[i];
	} 
	printf("%lld\n",total);
	return 0;
}
2022/7/30 15:28
加载中...