Pagini recente » Cod sursa (job #376806) | Cod sursa (job #863965) | Cod sursa (job #1212571) | Cod sursa (job #2559818) | Cod sursa (job #2061621)
#include <iostream>
#include <fstream>
/*
24 12 15 15 19
1 1 2 2 3
1 2 3 4 5
___________________
v: 17 13 4 9 53 18 1 3 7 2 77
dp: 1 1 1 2 3 3 1 2 3 2 4
p: 0 0 0 3 4 4 0 7 8 7 6
*/
int n,v[100005],dp[100005]={1},p[100005],lmax,poz,maxx=-1,dim,rez[100005];
using namespace std;
ifstream f ("scmax.in");
ofstream g ("scmax.out");
int main()
{
f>>n;
for(int i=1;i<=n;i++)
f>>v[i];
dp[1]=1;
for(int i=2;i<=n;i++)
{
lmax=0;poz=0;
for(int j=1;j<i;j++)
{
if(v[j]<v[i] && lmax<dp[j])
{
lmax=dp[j];
poz=j;
}
}
dp[i]=lmax+1;
p[i]=poz;
}
for(int i=1;i<=n;i++)
if(dp[i]>maxx){maxx=dp[i];poz=i;}
g<<maxx<<'\n';
dim=0;
for(int i=poz;i!=0;i=p[i])
{
dim++;
rez[dim]=v[i];
}
for(int i=dim;i>=1;i--)
g<<rez[i]<<' ';
return 0;
}