Pagini recente » Cod sursa (job #3141814) | Cod sursa (job #2648838) | Cod sursa (job #652108) | Cod sursa (job #3262489) | Cod sursa (job #3243244)
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
const int dim = 100000 + 5;
int n, a[dim], dp[dim], pre[dim], sol[dim], k = 0;
int main()
{
int i, j;
fin >> n;
for ( i = 1; i <= n; ++i )
fin >> a[i];
int maxi;
for ( i = 1; i <= n; ++i )
{
maxi = 0;
for ( j = 1; j < i; ++j )
if ( a[j] < a[i] && dp[j] > maxi )
{
maxi = dp[j];
pre[i] = j;
}
dp[i] = maxi + 1;
}
maxi = 0;
int poz;
for ( i = 1; i <= n; ++i )
if ( maxi < dp[i] )
{
maxi = dp[i];
poz = i;
}
fout << maxi << '\n';
while ( poz != 0 )
{
sol[++k] = a[poz];
poz = pre[poz];
}
for ( i = k; i >= 1; --i )
fout << sol[i] << " ";
return 0;
}