Pagini recente » Borderou de evaluare (job #631036) | Cod sursa (job #2722998) | Cod sursa (job #2783895) | Cod sursa (job #1977253) | Cod sursa (job #2386201)
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,k,v[100004],v1[100004],d[100004],maxim,j1,u,t[100004];
int main()
{
fin>>n;
for(int i=1;i<=n;i++)
fin>>v[i];
d[1]=1;
v[n+1]=1000000004;
for(int i=2;i<=n+1;i++)
{
maxim=0;
j1=0;
for(int j=1;j<i;j++)
{
if(v[i]>v[j] && d[j]>maxim)
{
maxim=d[j];
j1=j;
}
}
d[i]=maxim+1;
t[i]=j1;
}
fout<<d[n+1]-1<<"\n";
u=t[n+1];
while(u!=0)
{
v1[++k]=v[u];
u=t[u];
}
for(int i=k;i>=1;i--)
fout<<v1[i]<<" ";
return 0;
}