问题描述:

Wozuinb非常喜欢打炉石传说,但是菜的不行,所以他决定打
竞技场来练练手。系统按顺序给出n张卡牌,每张卡牌都有自
己的使用消耗a[i],每次只给出一张,wozuinb可以选择或者
弃掉这张牌。每选择一张牌都会按选择顺序放在卡槽中,当
卡槽中放满30张即可组成一套套牌。Wozuinb希望自己的套牌的
消耗满足一个平滑的曲线,即30张卡牌都满足第i张卡牌的消耗
不小于第i-1张(i>1)。请你帮助wozuinb看一看,这些卡牌能不
能组成想要的套牌,如果能组成输出“yes”,如果不能输出“no”。

输入描述:

第一行输入一个整数n,0<n<100。
第二行输入一行数字a[i],每个数字用空格隔开,代表第i张出现的卡牌的消耗。

输出描述:

输出一行,“yes”或“no”

示例1

输入

5
1 2 3 4 5

输出

no



最长非递减/(非递增)序列大小模板
 1 #include <iostream>
 2 #include<algorithm>
 3 #include<math.h>
 4 using namespace std;
 5 
 6 #define ll long long
 7 const int maxn=200;
 8 int main(int argc, char** argv) {
 9     int dp[maxn];
10     int a[maxn];
11     int n;
12     cin>>n;
13     int ans=0;
14     for(int i=1;i<=n;i++)
15     {
16         cin>>a[i];
17         dp[i]=1;
18         for(int j=1;j<i;j++)
19         {
20             if(a[j]<=a[i])
21             {
22                 dp[i]=max(dp[i],dp[j]+1);
23             }
24         }
25         cout<<dp[i]<<endl;
26         ans=max(ans,dp[i]);
27     }
28     if(ans>=30)
29     cout<<"yes"<<endl;
30     else 
31     cout<<"no"<<endl;
32     return 0;
33 }