Pagini recente » Cod sursa (job #2782141) | Cod sursa (job #805462) | Cod sursa (job #441816) | Cod sursa (job #1120554) | Cod sursa (job #2167199)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,a[100001];
int lg[100001],prec[100001];
void Read()
{
fin>>n;
for(int i=1;i<=n;i++) fin>>a[i];
fin.close();
}
void SirMax(int k)
{
if(prec[k]!=0) SirMax(prec[k]);
fout<<a[k]<<" ";
}
void Solutie()
{
int lgmax=0; int pozmax;
for(int i=1;i<=n;i++)
if(lg[i]>lgmax) {lgmax=lg[i]; pozmax=i;}
fout<<lgmax<<"\n";
SirMax(pozmax);
}
void Solve()
{ lg[1]=1; prec[1]=0;
for(int i=2;i<=n;i++)
{ lg[i]=1; prec[i]=0;
for(int j=1;j<i;j++)
if(a[j]<a[i] && lg[j]+1>lg[i])
{
lg[i]=lg[j]+1; prec[i]=j;
}
}
Solutie();
}
int main()
{ Read();
Solve();
return 0;
}