Pagini recente » Cod sursa (job #1040830) | Cod sursa (job #1093650) | Cod sursa (job #1754472) | Cod sursa (job #2053909) | Cod sursa (job #271528)
Cod sursa(job #271528)
#include<fstream>
using namespace std;
int n,poz,v[100010],sol[100010],l[100010],i,s,d,m,k,p,maxim;
int main()
{
ifstream f("scmax.in");
ofstream g("scmax.out");
f>>n;
for(i=1;i<=n;i++) f>>v[i];
for(i=1;i<=n;i++)
{ s=1; d=k; poz=0;
while(s<=d)
{ m=(s+d)>>1;
if(sol[m]>=v[i]) {d=m-1; poz=m;}
else s=m+1;
}
if(poz) { sol[poz]=v[i]; l[i]=poz; }
else {sol[++k]=v[i]; l[i]=k;}
if(l[i]>maxim) {maxim=l[i]; p=i;}
}
k=0;
g<<maxim<<'\n';
while(maxim)
{ if(l[p]==maxim) {sol[++k]=v[p]; maxim--;}
p--;
}
for(i=k;i>0;i--)
g<<sol[i]<<" ";
f.close();
g.close();
return 0;
}