Pagini recente » Cod sursa (job #1717397) | Cod sursa (job #454662) | Cod sursa (job #896382) | Cod sursa (job #2963895) | Cod sursa (job #2198779)
#include <fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int k,n,i,sol[100001],v[100001],p[100001],poz,mid,l[100001],x;
int binar (int st,int dr){
st=1;dr=k;
int poz=0;
while(st<=dr){
mid=(st+dr)/2;
if(v[mid]>=v[i]){
poz=mid;
dr=mid-1;
}
else
st=mid+1;
}
if(poz==0)
return st;
return poz;
}
int main()
{ f>>n;k=0;
for(i=1;i<=n;i++){
f>>v[i];
if(k==0){
l[++k]=i;
p[1]=0;
}
else{
poz=binar(1,k);
l[poz]=i;
p[i]=p[poz];
k=max(k,poz);
}
}
g<<k<<'\n';
n=k;
sol[k]=v[l[k]];
x=p[l[k]];
k--;
while(x!=0){
sol[k]=v[x];
x=p[x];
}
for(i=1;i<=n;i++)
g<<sol[i]<<' ';
return 0;
}