满江红求助
查看原帖
满江红求助
1073342
Genshin_ZFYX楼主2024/7/2 17:28

怒发冲冠,凭栏处,潇潇雨歇。

抬望眼,仰天WA,壮怀激烈。

#include<bits/stdc++.h>
using namespace std;
int n,a[100005],f[100005],m;
int main()
{
	cin.tie(0)->sync_with_stdio(0);
	while(cin>>a[++n]);
	n--;
	f[1]=a[1];m=1;
	for(int i=2;i<=n;i++)
	{
		int x=upper_bound(f+1,f+1+m,a[i],greater<int>())-f;
		if(x>=m)
		{
			if(a[i]<f[m])m++;
			f[m]=a[i];
		}
		else f[x]=a[i];
	}
	cout<<m<<endl;
	memset(f,0,sizeof(f));
	f[1]=a[1];m=1;
	for(int i=2;i<=n;i++)
	{
		int x=a[i],l=0,r=m+1;
		while(l+1<r)
		{
			int mid=l+(r-l)/2;
			if(f[mid]<=x)l=mid;
			else r=mid;
		}
		if(r>m)f[++m]=x;
		else f[r]=x;
	}
	cout<<m;
	return 0;
 }
2024/7/2 17:28
加载中...