Pagini recente » Cod sursa (job #818468) | Cod sursa (job #2675554) | Cod sursa (job #1998351) | Autentificare | Cod sursa (job #2133574)
#include <fstream>
#define MAX 100000
using namespace std;
ifstream fin("LIS.in");
ofstream fout("LIS.out");
int a[MAX];
int lgmax[MAX];
int urm[MAX];
int n;
int maxim, urmator, pozmax;
int ok;
int main()
{int i, j;
fin>>n;
for(i=0;i<n;i++) fin>>a[i];
lgmax[n-1]=1; urm[n-1]=-1; //cel mai mic sufix
for(i=n-2; i>=0; i--)
{
maxim=1; urmator=-1;
for(j=i+1;j<n;j++)
if(a[i]<a[j] && 1+lgmax[j]>maxim)
{
maxim=1+lgmax[j];
urmator=j;
}
lgmax[i]=maxim;
urm[i]=urmator;
}
//afisare
maxim=-1;
for(i=0;i<n;i++)
if(lgmax[i]>maxim)
{maxim=lgmax[i];
pozmax=i;}
fout<<maxim<<'\n';
ok=1;
for(i=pozmax; ok; i=urm[i])
{
fout<<a[i]<<' ';
if(urm[i]==-1) ok=0;
}
return 0;
}