Pagini recente » Istoria paginii utilizator/funlovinggirl | Cod sursa (job #2363746) | Cod sursa (job #1580166) | Cod sursa (job #1705945) | Cod sursa (job #1651279)
#include <iostream>
#include <fstream>
using namespace std;
long binarys( long *a, long *t, long long x, long long start, long long finish){
long mid=(start+finish)/2;
if (a[t[mid-1]]<x && a[t[mid+1]]>x) {if(x<=a[t[mid]]) return mid; else return mid+1;} else if (x>a[t[mid]]) return binarys(a, t, x, mid+1, finish); else return binarys(a, t, x, start, mid-1);
}
int main()
{ long n;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
fin>>n;
long *a= new long[n+5];
long t[100005];
long len=0;
for(long i=0; i<n; i++) fin>>a[i];
t[0]=0;
for(long i=1; i<n; i++){
if (a[i]>a[t[len]]) {len++; t[len]=i; } else
if (a[i]!=a[t[len]]){
if (a[i]<a[t[0]]) t[0]=i; else {
long x=binarys(a, t, a[i], 0, len);
t[x]=i;
}
}
}
fout<<len+1<<endl;
for(long i=0; i<=len; i++) fout<<a[t[i]]<<" ";
delete a;
return 0;
}