Pagini recente » Cod sursa (job #2091302) | Cod sursa (job #2298639) | Cod sursa (job #1128950) | Cod sursa (job #2085694) | Cod sursa (job #971941)
Cod sursa(job #971941)
#include<fstream>
#include<iostream>
using namespace std;
int n,v[100000],poz[100000],sum[100000],l[100000],s;
int maxim,p;
void dinamica()
{
l[n]=1;
poz[n]=-1;
maxim=1;
for(int i=n-1;i>=1;i--)
{
l[i]=1;
poz[i]=-1;
for(int j=i;j<=n;j++)
{
if(v[i]<v[j] && l[i]<1+l[j])
{
l[i]=l[j]+1;
poz[i]=j;
if(l[i]>maxim)
{
maxim=l[i];
p=i;
}
}
}
}
}
void construire()
{
while(p!=-1)
{
s++;
sum[s]=v[p];
p=poz[p];
}
}
int main()
{
ifstream in("scmax.in");
ofstream out("scmax.out");
in>>n;
for(int i=1;i<=n;i++)
in>>v[i];
dinamica();
construire();
out<<s<<"\n";
for(int i=1;i<=s;i++)
out<<sum[i]<<" ";
}