Pagini recente » Cod sursa (job #1600067) | Cod sursa (job #2058248) | Cod sursa (job #2722589) | Cod sursa (job #1767723) | Cod sursa (job #2096138)
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int a[100001],b[100001],p[100001],s[100001];
int i,j,N,m;
void afisare(int m)
{
if(m){
afisare(p[m]);
fout<<a[m]<<" ";
}
}
int main()
{
fin>>N;
for(i=1;i<=N;i++)
fin>>a[i];
b[1] = 1;
p[1] = 0;
int maxim;
for(i=2;i<=N;i++)
{
p[i] = 0;
maxim = 0;
for(j=1;j<i;j++)
if(a[j]<a[i] && maxim<b[j])
{maxim = b[j];
p[i] = j;}
b[i] = maxim + 1;
}
m = 1;
for(i=2;i<=N;i++)
if(b[m] < b[i]) m = i;
int k, kk;
fout<<b[m]<<'\n';
//k = b[m];
//s[k] = a[m];
//fout<<k<<'\n';
//kk = k;
//fout<<a[m]<<" ";
/*
while(m)
{
m = p[m];
//k--;
//s[k] = a[m];
fout<<a[m]<<" ";
}
*/
//for(i=1;i<=kk;i++)
//fout<<s[i]<<" ";
afisare(m);
return 0;
}