Pagini recente » Cod sursa (job #2627032) | Cod sursa (job #1502273) | Cod sursa (job #1156340) | Cod sursa (job #2209825) | Cod sursa (job #3196960)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("scmax.in");
ofstream out ("scmax.out");
const int NMAX=100005;
int n;
int v[NMAX],dp[NMAX],parent[NMAX];
int fin;
void recurs(int poz,bool ok)
{
if(parent[poz]==-1)
ok=true;
if(!ok)
{
recurs(parent[poz],ok);
out<<v[poz]<<" ";
}
else
{
out<<v[poz]<<" ";
}
}
void scmax()
{
int poz=0;
for(int i=1; i<=n; i++)
{
dp[i]=1;
parent[i]=-1;
for(int j=1; j<i; j++)
{
if(v[j]<v[i])
{
if(dp[j]+1>dp[i])
{
dp[i]=dp[j]+1;
parent[i]=j;
}
}
}
if(dp[i]>fin)
{
fin=dp[i];
poz=i;
}
}
/*for(int i=1;i<=n;i++)
cout<<dp[i]<<" ";
cout<<'\n';*/
out<<fin<<'\n';
bool ok=false;
recurs(poz,ok);
}
int main()
{
in>>n;
for(int i=1; i<=n; i++)
in>>v[i];
scmax();
return 0;
}