Pagini recente » Cod sursa (job #281252) | Cod sursa (job #1232350) | Cod sursa (job #1227329) | Cod sursa (job #1326814) | Cod sursa (job #2153529)
#include <iostream>
#include <fstream>
using namespace std;
int a[100010], t[100010], l[100010], af[100010];
int main()
{
int n, x=0, maxim, pozmax;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
fin >> n;
for (int i=1; i<=n; i++)
fin >> a[i];
l[++x]=1;
for (int i=2; i<=n; i++)
{
maxim=0;
pozmax=0;
for (int j=1; j<i; j++)
{
if (a[j]<a[i] && l[j]>maxim)
{
maxim=l[j];
pozmax=j;
}
l[i]=maxim+1;
t[i]=pozmax;
}
}
maxim=0;
for (int i=1; i<=n; i++)
if (l[maxim]<l[i])
maxim=i;
af[1]=a[maxim];
pozmax=maxim;
for (int i=2; i<=l[maxim]; i++)
{
af[i]=a[t[pozmax]];
pozmax=t[pozmax];
}
fout << l[maxim] << "\n";
for (int i=l[maxim]; i>=1; i--)
fout << af[i] << " ";
return 0;
}