Pagini recente » Cod sursa (job #384228) | Cod sursa (job #2185447) | Cod sursa (job #1402220) | Cod sursa (job #2853030) | Cod sursa (job #819183)
Cod sursa(job #819183)
#include <fstream>
using namespace std;
ifstream in("scmax.in");
ofstream out ("scmax.out");
int x[100003];
int lmax[100003];
int urm[100003];
long long int ma=0,n,max1,max2;
void rezolvare()
{
int i,j,k;
lmax[n]=1;
urm[n]=-1;
max2=1;
max1=n;
for(i=n-1;i>=1;i--)
{
urm[i]=-1;
lmax[i]=1;
for(j=i+1;j<=n;j++)
{
if(x[i]<x[j])
{
if(lmax[i]<lmax[j]+1)
{
lmax[i]=lmax[j]+1;
urm[i]=j;
}
if(lmax[i]>max2)
{
max1=i;
max2=lmax[i];
}
}
}
}
}
int main()
{
long long int i,j,a,b,k;
in>>n;
for (i=1;i<=n;i++)
{
in>>x[i];
}
rezolvare();
out<<max2<<"\n";
for(i=max1;i!=-1;i=urm[i])
{
out<<x[i]<<" ";
}
in.close();
out.close();
return 0;
}