Pagini recente » Cod sursa (job #1896245) | Cod sursa (job #2967509) | Cod sursa (job #421551) | Cod sursa (job #2323986) | Cod sursa (job #1112016)
//Subsir crescator maximal
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,i,j,maxlg,pozm,nr;
long long a[10000],pozd[10000],lg[10000];
f>>n;
for ( i=1; i<=n; i++)
f>>a[i];
lg[n]=1;
pozd[n]=0;
maxlg=0;
for ( i=n-1; i>=1; i--) {
for (j=i+1; j<=n; j++)
//caut maximul din lg[j]
if (lg[j]>maxlg)
if (a[j]>a[i]){
maxlg=lg[j];
pozm=j;
}
//pun valorile
lg[i]=maxlg+1;
pozd[i]=pozm;
}
//Aflu lungimea maxima
maxlg=0;
for (i=1; i<=n; i++)
if (maxlg<lg[i]){
maxlg=lg[i];
pozm=i;
}
g<<maxlg<<'\n';
nr=0;
i=pozm;
while (nr<maxlg)
{
g<<a[i]<<" ";
i=pozd[i];
nr++;
}
f.close();
g.close();
return 0;
}