Pagini recente » Cod sursa (job #2785314) | Cod sursa (job #1381794) | Cod sursa (job #1806344) | Cod sursa (job #1801997) | Cod sursa (job #2950839)
#include <fstream>
std::ifstream f("scmax.in");
std::ofstream g("scmax.out");
int n,x,r,i,s,d,m;
int v[1<<17],k[1<<17],a[1<<17],p[1<<17];
int main() {
f>>n;
for(i=1;i<=n;i++){f>>v[i],k[i]=2e9;
s=0,d=i;
while(s<=d) {
if(k[m=(s+d)/2]<=v[i])
s=m+1;
else
d=m-1;
}
if(k[d]<v[i])
k[s]=v[i],a[i]=s,x=r=(s>r?s:r);
}
g<<r<<" ";
while(--i)if(a[i]==r)p[--r]=v[i];
while(r<x)g<<p[r++]<<" ";
}