Pagini recente » Cod sursa (job #65628) | Cod sursa (job #2244731) | Cod sursa (job #2337794) | Cod sursa (job #1578036) | Cod sursa (job #803302)
Cod sursa(job #803302)
#include<fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,i,j,m,p,maxim,im,pm,v[100000],lun[100000],pre[100000],w[100000];
void rezolvare ()
{
lun[1]=1;
pre[1]=-1;
maxim=1;
for(i=2;i<=n;i++)
{
m=0;
p=-1;
for(j=1;j<=i-1;j++)
{
if(v[j]<v[i])
if(lun[j]>m)
{
m=lun[j];
p=j;
}
}
lun[i]=1+m;
pre[i]=p;
if(lun[i]>=maxim)
{
im=i;
maxim=lun[i];
pm=pre[i];
}
}
}
int main ()
{
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
maxim=0;
rezolvare();
i=im;
pm=pre[i];
j=maxim;
g<<maxim<<"\n";
while(pre[i]!=-1)
{
w[j]=v[i];
j--;
i=pre[i];
}
w[j]=v[i];
for(i=1;i<=maxim;i++)
g<<w[i]<<" ";
f.close();g.close();
return 0;
}