Pagini recente » Cod sursa (job #1277795) | Cod sursa (job #846706) | Cod sursa (job #2795768) | Cod sursa (job #1904784) | Cod sursa (job #2233079)
#include <iostream>
#include <fstream>
#define MAX 100000
using namespace std;
ifstream f("csmax.in");
ofstream g("csmax.out");
int N,t=0;
long int a[MAX],l[MAX];
void SECMAX (int N,long int a[MAX])
{
int i,k,max,max2=0;
l[N]=1;
for(i=N-1;i>=1;i--)
{
max=0;
for(k=i+1;k<=N;k++)
if(a[k]>a[i] && l[k]>max)
max=l[k];
l[i]=1+max;
if(l[i]>max2)
{max2=l[i];
t=i;
}
}
g<<max2<<endl;
}
void Afisare(int N,long int a[MAX])
{
int i,max=l[t];
g<<a[t]<<" ";
for(i=t+1;i<=N;i++)
if(a[i]>a[t] && l[i]==max-1)
{
g<<a[i]<<" ";
max--;
}
}
int main()
{int i;
f>>N;
for(i=1;i<=N;i++)
f>>a[i];
SECMAX(N,a);
g<<t;
Afisare(N,a);
return 0;
}