Pagini recente » Cod sursa (job #1169404) | Cod sursa (job #2840910) | Cod sursa (job #2194346) | Cod sursa (job #2590016) | Cod sursa (job #2321019)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
const int N=1000001;
int n,secv,maxi=1,p;
int v[N],pred[N],lung[N],poz[N];
int main()
{
in>>n;
for(int i=1; i<=n; ++i) in>>v[i];
lung[n]=1;
poz[n]=-1;
p=n;
for(int i=n-1; i>=1; --i)
{
lung[i]=1;
poz[i]=-1;
for(int j=i+1; j<=n; ++j)
if(v[i]<v[j] && lung[i]<lung[j]+1)
{
lung[i]=lung[j]+1;
poz[i]=j;
if(lung[i]>maxi)
{
maxi=lung[i];
p=i;
}
}
}
int x=1;
int i=p;
while(i!=-1)
{
pred[x++]=v[i];
i=poz[i];
}
out<<maxi<<"\n";
for(int k=1; k<x; ++k) out<<pred[k]<<" ";
return 0;
}