Pagini recente » Cod sursa (job #2472515) | Cod sursa (job #1486760) | Cod sursa (job #2534257) | Cod sursa (job #240594) | Cod sursa (job #2500590)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
long long nr[100001], s[100001], prec[100001], nrf[100001];
int main()
{
int n, Max;
fin>>n;
for(int i=1; i<=n; i++)
fin>>nr[i];
for(int i=1; i<=n; i++)
{
Max=0;
for(int j=1; j<i; j++)
if(nr[j]<nr[i] && s[j]>Max)
{
Max=s[j];
prec[i]=j;
}
s[i]=Max+1;
}
Max=0;
int poz_max=0;
for(int i=1; i<=n; i++)
if(Max<s[i])
{
Max=s[i];
poz_max=i;
}
//nrf[++nrf[0]]=nr[poz_max];
while(prec[poz_max]!=0)
{
nrf[++nrf[0]]=nr[poz_max];
poz_max=prec[poz_max];
}
nrf[++nrf[0]]=nr[poz_max];
/*for(int i=1; i<=n; i++)
cout<<prec[i]<<" ";*/
fout<<Max<<"\n";
for(int i=nrf[0]; i>=1; i--)
fout<<nrf[i]<<" ";
return 0;
}