Pagini recente » Cod sursa (job #2592974) | Cod sursa (job #2198036) | daupentrumata | Cod sursa (job #974346) | Cod sursa (job #2090007)
#include <iostream>
#include <fstream>
#define NMAX 100001
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,v[NMAX],dp[NMAX],nextt[NMAX],aux[NMAX],x;
int main()
{
fin >> n;
int i,j;
int maxim=-1;
for(i=1;i<=n;i++)
{
fin >> v[i];
}
for(i=1;i<=n;i++)
{
dp[i] = 1;
for(j=i-1;j>=1;j--)
{
if(v[j]<v[i])
{
if(dp[i]<=dp[j]) /// +1
{
/// memoreaza-l pe j
nextt[i]=j;
dp[i]=dp[j]+1;
}
}
}
}
for(i=1;i<=n;i++)
{
if(dp[i]>maxim)
{
maxim=dp[i];
x=i;
}
}
aux[1]=v[x];
int k=2;
while(nextt[x]!=0)
{
aux[k]=v[nextt[x]];
nextt[x]=nextt[nextt[x]];
k++;
}
fout << maxim << '\n';
for(i=k-1;i>=1;i--)
{
fout << aux[i] << ' ';
}
return 0;
}