Pagini recente » Cod sursa (job #5859) | Cod sursa (job #871321) | Cod sursa (job #1397744) | Cod sursa (job #1300330) | Cod sursa (job #2261375)
#include <fstream>
#define NMAX 100003
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n, maxi, imax;
int a[NMAX], lis[NMAX], urm[NMAX];
void citire()
{
int i;
fin >> n;
for(i=1; i<=n; ++i)
fin >> a[i];
}
void pd()
{
int maxim, i, j, urmator;
lis[n]=1;
for(i=n-1; i>=1; --i)
{
maxim=-1; urmator=0;
for(j=i+1; j<=n; ++j)
if(lis[j]>maxim && a[j]>a[i])
maxim=lis[j], urmator=j;
lis[i]=maxim+1; urm[i]=urmator;
if(lis[i]>maxi)
maxi=lis[i], imax=i;
}
}
void afisare()
{
int i, maxim=-1;
fout << maxi << '\n';
while(urm[imax]!=0)
{
fout << a[imax] << ' ';
imax=urm[imax];
}
fout << a[imax] << '\n';
}
int main()
{
citire();
pd();
afisare();
return 0;
}