Pagini recente » Cod sursa (job #1055099) | Cod sursa (job #1047917) | Cod sursa (job #1515980) | Cod sursa (job #1332904) | Cod sursa (job #2972453)
#include <fstream>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
int best[100005],f[100005],v[100005],k=0;
int cb(int nr)
{
int st=1,dr=k,mij,poz=0;
while(st<=dr)
{
mij=(st+dr)/2;
if(v[best[mij]]<nr)
{
poz=mij;
st=mij+1;
}
else
dr=mij-1;
}
return poz;
}
int main()
{
int n;
in>>n;
for(int i=1;i<=n;i++)
{
in>>v[i];
int poz=cb(v[i]);
best[poz+1]=i;
if(poz==k)
k++;
f[i]=best[poz];
}
out<<k<<'\n';
int ant=-1;
for(int i=1;i<=n;i++)
{
if(ant!=v[f[i]] && f[i]!=0)
{
out<<v[f[i]]<<" ";
ant=v[f[i]];
}
}
out<<v[best[k]];
return 0;
}