Pagini recente » Cod sursa (job #1884544) | Cod sursa (job #3340839) | Monitorul de evaluare | Cod sursa (job #3298355) | Cod sursa (job #3339140)
#include <iostream>
#include <cstdio>
using namespace std;
int n,m,p,v[105],dp[105][105],mini=1e9,maxi=1;
//dp[i][j] valorarea cea mai mica cu care se termina un subsir crescator de lungime j din primele i elemente
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cin>>n;
for(int i=1;i<=n;++i) cin>>v[i];
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j) dp[i][j]=1e9;
}
for(int i=1;i<=n;++i){
mini=min(mini,v[i]);
dp[i][1]=mini;
//cout<<dp[i][1]<<" ";
}
for(int i=1;i<=n;++i){
for(int j=2;j<=i;++j){
bool ok=0;
if(i==3 && j==2) cout<<dp[i-1][j-1]<< ' '<<v[i];
if(v[i]>dp[i-1][j-1])
dp[i][j]=min(dp[i][j],v[i]),ok=1, cout<<ok<<" ";
dp[i][j]=min(dp[i][j],dp[i-1][j]);
if(dp[i][j]!=1e9 && dp[i][j]!=0){
maxi=max(maxi,j);
}
// cout<<dp[i][j]<<' ';
}
cout<<'\n';
}
cout<<maxi;
return 0;
}