Pagini recente » Cod sursa (job #213481) | Cod sursa (job #2401599) | Cod sursa (job #1461998) | Cod sursa (job #2573377) | Cod sursa (job #214752)
Cod sursa(job #214752)
using namespace std;
#include <iostream>
#include <fstream>
#define N 100001
int a[N], dp[N],t[N], n;
// dp = dynamic programing
// dp = lungimea celui mai lung subsir care se termina pe pozitia i
void read()
{
ifstream f("scmax.in");
ofstream g("scmax.out");
f>>n;
for(int i=1;i<=n;++i) f>>a[i];
}
void solve()
{
int i, j;
for(i=n-1; i>=1 ; --i)
for(j=i+1; j<=n; ++j)
if(a[i] < a[j])
if(dp[i] < dp[j]+1)
dp[i]=dp[j]+1, t[i]=j;
int sol=0,pz=0;
for(i=1;i<=n;++i)
if(sol < dp[i]) sol=dp[i], pz=i;
cout<<sol+1<<"\n";
for(i=pz; i ; i=t[i])
cout<<a[i]<<" ";
cout<<"\n";
}
int main()
{
read();
solve();
return 0;
}