Pagini recente » Istoria paginii runda/usu8/clasament | Cod sursa (job #882202) | tema | Istoria paginii runda/vot/voteaza_miruna/clasament | Cod sursa (job #809143)
Cod sursa(job #809143)
#include<fstream>
#define nmax 1000003
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
void citire();
void pd();
void afisare();
int lgmax[nmax],a[nmax],urm[nmax];
int n ,imax, maxx;
int main()
{
citire();
pd();
afisare();
return 0;
}
void citire()
{
int i;
fin>>n;
for(i=1;i<=n;++i)
fin>>a[i];
}
void pd()
{
int i,j;
lgmax[n]=1;
urm[n]=-1;
maxx=1; imax=n;
for(i=n-1;i>=1;--i)
{
lgmax[i]=1;
urm[i]=-1;
for(j=i+1;j<=n;++j)
if(a[i]<a[j] && lgmax[i]<lgmax[j]+1)
{
lgmax[i]=lgmax[j]+1;
urm[i]=j;
if(lgmax[i]>maxx)
maxx=lgmax[i],imax=i;
}
}
}
void afisare()
{
int i;
fout<<maxx<<'\n';
i=imax;
while(i!=-1)
{
fout<<a[i]<<' ';
i=urm[i];
}
}