Pagini recente » Cod sursa (job #2091136) | Borderou de evaluare (job #811921) | Cod sursa (job #348904) | Borderou de evaluare (job #113383) | Cod sursa (job #1975361)
#include<iostream>
#include<fstream>
#include<string.h>
#include<algorithm>
using namespace std;
long long a[100005];
long v[100005];
long res[100005];
long n;
long length;
bool comp(long x,long y)
{
return a[x]<a[y];
}
long lungime=0;
int main()
{
ifstream f("scmax.in",fstream::in);
ofstream g("scmax.out",fstream::out);
f>>n;
for(long i=0;i<n;i++)
f>>a[i];
for(long i=0;i<n;i++)
res[i]=-1;
v[0]=0;
lungime=1;
for(long i=1;i<n;i++)
if(a[i]>a[v[lungime-1]]) v[lungime++]=i;
else{
long *r=upper_bound(v,v+lungime,i,comp);
v[r-v]=i;
}
g<<lungime<<endl;
for(long i=0;i<lungime;i++)
g<<a[v[i]]<<" ";
}