Pagini recente » Cod sursa (job #1174158) | Cod sursa (job #304912) | Cod sursa (job #2351854) | Cod sursa (job #2284480) | Cod sursa (job #2615948)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
int v[100000], secmax[100000], efinal[100000];
int main()
{
int i,n,j,maxx,cpmaxx,ecurent;
fin >> n;
for(i=0;i<n;i++)
fin >> v[i];
for(i=0;i<n;i++)
{
maxx=0;
for(j=i-1;j>=0;j--)
if(v[i]>v[j])
if(secmax[j]>maxx)
maxx=secmax[j];
secmax[i]=maxx+1;
}
for(i=0;i<n;i++)
if(secmax[i]>maxx)
maxx=secmax[i];
i=0;
cpmaxx=maxx;
while(secmax[i]<maxx)
i++;
ecurent=v[i];
maxx--;
efinal[maxx]=ecurent;
for(j=i-1;j>0;j--)
if(ecurent>v[j] && secmax[j]==maxx)
{
efinal[--maxx]=v[j];
ecurent=v[j];
}
fout << cpmaxx << '\n';
for(i=0;i<cpmaxx;i++)
fout << efinal[i] << " ";
return 0;
}