Pagini recente » Cod sursa (job #2879142) | Cod sursa (job #1053572) | Cod sursa (job #1705409) | Cod sursa (job #2151998) | Cod sursa (job #2447807)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n, a[100005];
int dp[100005];
int pr[100005];
int s[100005];
int main()
{
fin >> n;
for(int i = 1; i <= n; i++)
fin >> a[i];
for(int i = 1; i <= n; i++)
{
int mx = 0, poz = 0;
for(int j = 1; j <= i; j++)
if(a[j] < a[i] && dp[j] > mx)
{
mx = dp[j];
poz = j;
}
dp[i] = mx + 1;
pr[i] = poz;
}
int sol = -1, p;
for(int i = 1; i <= n; i++)
if(dp[i] > sol)
{
sol = dp[i];
p = i;
}
fout << sol << "\n";
int lg = 0;
while(dp[p] > 0)
{
s[++lg] = a[p];
p = pr[p];
}
for(int i = lg; i >= 1; i--)
fout << s[i] << " ";
return 0;
}