Pagini recente » Cod sursa (job #1165747) | Cod sursa (job #454844) | Cod sursa (job #1685323) | Profil BotosDavid | Cod sursa (job #2176280)
#include <fstream>
#include <iostream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int v[100005],T[100005],L[100005];
int n,t;
void citire()
{
f>>n;
for(int i=1;i<=n;i++)f>>v[i];
}
void dinamica()
{
L[n]=1;
T[n]=0;
for(int i=n-1;i>=1;i--)
{L[i]=1;
T[i]=0;
for(int j=i+1;j<=n;j++){
if(v[i]<v[j]&&L[i]<=L[j]){
L[i]=L[j]+1;
T[i]=j;
}
}
}
}
void cauta()
{
int m1=0,m2;
for(int i=1;i<=n;i++)
{
if(m1<L[i]){
m1=L[i];
m2=i;
}
if(m1>n-i-m1+1)break;
}
t=m2;
}
void afisare(int x){
g<<v[x]<<" ";
if(T[x]!=0)afisare(T[x]);
}
int main()
{
citire();
dinamica();
cauta();
g<<L[t]<<'\n';
afisare(t);
}