Pagini recente » Cod sursa (job #659119) | Cod sursa (job #2286814) | Istoria paginii utilizator/castravetimurati | Cod sursa (job #1768296) | Cod sursa (job #2274347)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n;
int vec[100001];
int aux[100001];
int sol[100001];
int maxim, pozmax;
int main()
{
fin>>n;
for(int i=1; i<=n; i++)
{
fin>>vec[i];
int temp=0;
for(int j=i-1; j; j--)
if(vec[j]<vec[i]) temp=max(temp, aux[j]);
aux[i]=temp+1;
if(aux[i]>maxim)
{
maxim=aux[i];
pozmax=i;
}
}
fout<<maxim<<'\n';
int cpy=maxim;
sol[maxim]=vec[pozmax];
maxim--;
while(maxim)
{
for(int i=pozmax-1; i; i--)
if(vec[i]<vec[pozmax] && aux[i]==maxim)
{
pozmax=i;
sol[maxim]=vec[i];
maxim--;
break;
}
}
for(int i=1; i<=cpy; i++) fout<<sol[i]<<' ';
return 0;
}