导弹拦截

https://www.luogu.com.cn/problem/P1020

#include<bits/stdc++.h>
using namespace std;
int a[1000000],l[1000000];
int main()
{
	int n=1,cnt=0,len1=1;
	while(cin>>a[n]) n++;
	n--;
	l[++cnt]=a[1];
	for(int i=2;i<=n;i++)
	{
		if(a[i]<=l[cnt])
		{
			len1++;
			l[++cnt]=a[i];
		}
		else 
		{
			int x=upper_bound(l+1,l+1+cnt,a[i],greater<int>())-l;
			l[x]=a[i];
		}
	}
	cout<<len1<<"\n";
	cnt=0;int len2=1;
	l[++cnt]=a[1];
	for(int i=2;i<=n;i++)
	{
		if(a[i]>l[cnt])
		{
			l[++cnt]=a[i];
			len2++;
		}
		else 
		{
			int x=lower_bound(l+1,l+1+cnt,a[i])-l;
			l[x]=a[i];
		}
	}
	cout<<len2;
	return 0;
}```
posted @ 2020-08-22 21:51  zlq,  阅读(68)  评论(0编辑  收藏  举报