Pagini recente » Cod sursa (job #2734321) | Cod sursa (job #2102124) | Cod sursa (job #1586357) | Cod sursa (job #1974888) | Cod sursa (job #2328778)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n, a[100005], dp[100005], urm[100005];
int main()
{
int i, mx = 0, j, p;
fin >> n;
for(i = 1; i <= n; i++)
fin >> a[i];
dp[n] = 1;
urm[n] = n + 1;
for(i = n - 1; i >= 1; i--)
{
mx = 0;
p = n + 1;
for(j = i + 1; j <= n; j++)
if(a[i] < a[j] && mx < dp[j])
{
mx = dp[j];
p = j;
}
dp[i] = 1 + mx;
urm[i] = p;
}
j = 1;
for(i = 1; i <= n; i++)
if(dp[j] < dp[i]) j = i;
fout << dp[j] << "\n";
while(j <= n)
{
fout << a[j] << " ";
j = urm[j];
}
return 0;
}