Pagini recente » Cod sursa (job #100428) | Cod sursa (job #834419) | Cod sursa (job #53144) | Cod sursa (job #6286) | Cod sursa (job #2148139)
#include<fstream>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
int v[100003], l[100003], best[100003];
int nr;
int caut(int x)
{
int mij, st, dr;
st=1;
dr=nr;
while(st<=dr)
{
mij=(st+dr)/2;
if(x<=v[l[mij]]) dr=mij-1;
else st=mij+1;
}
return dr;
}
int main()
{
int n,i,poz;
nr=1;
in>>n;
for(i=1; i<=n; i++)
in>>v[i];
l[0]=0;
l[1]=1;
for(i=2; i<=n; i++)
{
poz=caut(v[i]);
best[i]=poz+1;
if(poz+1<=nr) { if(v[i]<v[l[poz+1]]) l[poz+1]=i; }
else {nr++; l[nr]=i; }
}
out<<nr<<"\n";
for(i=1; i<=nr; i++)
out<<v[l[i]]<<" ";
return 0;
}