(未完成)
#include<bits/stdc++.h>
using namespace std;
const int N=100010;
int a[N],f1[N],len1,f2[N],len2,num,n=1;
/*
a[]:原數列
f1[]:最長不上升子序列1,記錄第一套攔截系統能攔截的導彈
len1:f1[]的長度
f2[]:最長不上升子序列2,記錄第i套攔截系統能攔截的最高的高度
len2:f2[]的長度
num:最少要配備的導彈攔截系統的數量
n:導彈總數
*/
int main()
{
while (scanf("%d",&a[n])) n++; n--;
for (int i=1;i<=n;i++)
{
int k=lower_bound(f+1,f+1+len1,a[i])-a; //k=f[]從1~n中第一個≥a[i]的值的位置
f[k+1]=a[i];
len1=k+1;
k=lower_bound(f+1,f+1+len1,a[i])-a;
}
return 0;
}