玄关求调
查看原帖
玄关求调
1253423
Go_Forward楼主2024/4/24 20:23
#include<bits/stdc++.h>
using namespace std;
int a[100005],ans;
vector<int> g,f;
int main()
{
	while(cin>>a[++a[0]]);
	--a[0];
	for(int i=1;i<=a[0];++i)
	{
		if(f.empty()||f[0]>a[i])
		{
			f.insert(f.begin(),1,a[i]);
		}else
		{
			int id=upper_bound(f.begin(),f.end(),a[i])-f.begin();
			//cout<<id<<"  ";
			f[id-1]=a[i];
		}
		/*for(vector<int>::iterator it=f.begin();it!=f.end();++it)
		  cout<<*it<<' ';
		cout<<'\n';*/
	}
	cout<<f.size()<<'\n';
	for(int i=1;i<=a[0];++i)
	{
		if(g.empty()||g[g.size()-1]<a[i])
		{
			g.insert(g.end(),1,a[i]);
			//cout<<-1<<"  ";
		}else
		{
			int id=lower_bound(g.begin(),g.end(),a[i])-g.begin();
			//cout<<id<<"  ";
			g[id]=a[i];
		}
		/*for(vector<int>::iterator it=g.begin();it!=g.end();++it)
		  cout<<*it<<' ';
		cout<<'\n';*/
	}
	cout<<g.size();
 } 
2024/4/24 20:23
加载中...