Pagini recente » Cod sursa (job #2697274) | Cod sursa (job #526280) | Cod sursa (job #447972) | Istoria paginii runda/mnmxmnmxmnmx_what | Cod sursa (job #768460)
Cod sursa(job #768460)
#include<fstream>
using namespace std;
int a[100005],p[100005],b[100005];
int main(void){
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int N,i,st,dr,mid,vf=0,vfp=0;
fin>>N;
for(i=1;i<=N;++i)fin>>a[i];
for(i=1;i<=N;++i)
{
st=0; dr=vf;
while(dr-st>1){
mid=(st+dr)>>1;
if(b[mid]<a[i])st=mid;
else dr=mid;
}
if(b[st]>a[i]){ b[st]=a[i]; p[++vfp]=st; }
else
if(b[dr]>a[i]){ b[dr]=a[i]; p[++vfp]=dr; }
else { b[++vf]=a[i]; p[++vfp]=vf; }
}
st=0; fout<<vf<<'\n';
for(i=vfp;i>0;--i)
if(p[i]==vf){ b[++st]=a[i]; --vf; }
for(i=st;i>0;--i)fout<<b[i]<<' ';
return 0;
}