Kỳ thật đề này cảm giác chính là một đạo đơn giản tư duy đề
Dùng một cái giá trị đại biểu hệ thống cái số, mới bắt đầu vì 1, sau đó mỗi lần tới một cái đạn pháo liền từ trước mặt mỗi một hệ thống trung tìm được nhỏ nhất lớn hơn nên đạn pháo hệ thống, sau đó đổi mới, nếu không có liền đem hệ thống cái số thêm một.
#include <iostream>
#include<string.h>
using namespace std;
int a[40000];
int b[40000];
int main()
{
int n;
while(cin>>n){
memset(a,0,sizeof(a));
for(int i=1;i<=n;i++){
cin>>b[i];
}
int k=1;
for(int i=1;i<=n;i++){
int m=40000;
int t=-1;
for(int j=1;j<=k;j++){
if(a[j]>=b[i]&&a[j]<m){
m=a[j];
t=j;
}
}
if(t!=-1) a[t]=b[i];
else a[k++]=b[i];
}
cout<<k-1<<endl;
}
return 0;
}