题目链接
题目给的n个整数均不相等,但是测试数据却存在相等。。
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <iostream>
#include <cmath>
#include <vector>
#include <map>
#include <stack>
#include <queue>
using namespace std;
typedef long long ll;
const int MAX=0x3f3f3f3f;
const int N=210;
int a[N],ans[N],dp[N];
int vis[N];
void print(int x){
if(dp[x]==1){
printf("%d",a[x]);
return;
}
print(ans[x]);
printf(" %d",a[x]);
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
memset(vis,-1,sizeof(vis));
int maxn=-MAX,k;
for(int i=1;i<=n;i++){
dp[i]=1;
for(int j=1;j<i;j++){
if(a[j]<=a[i]&&dp[j]+1>dp[i]){
dp[i]=dp[j]+1;
ans[i]=j;
vis[i]=j;
}
}
}
for(int i=1;i<=n;i++){
if(dp[i]>maxn){
maxn=dp[i];
k=i;
}
}
cout<<"max="<<maxn<<endl;
print(k);
cout<<endl;
}