Pagini recente » Cod sursa (job #2588867) | Cod sursa (job #2507935) | Cod sursa (job #1896381) | Cod sursa (job #254041) | Cod sursa (job #3203517)
//https://www.infoarena.ro/problema/scmax
#include <bits/stdc++.h>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int v[100010],d[1000010],ret[1000010];
int main()
{
int n,i;
fin>>n;
for(i=1;i<=n;i++)
{
fin>>v[i];
}
d[1]=v[1];
int l=0,k;
for(i=2;i<=n;i++)
{
if(d[l]!=v[i])
{
if(d[l]<v[i])
{
l++;
d[l]=v[i];
}
int st=1,dr=l;
while(st<=dr)
{
int mij=(st+dr)/2;
if(v[i]<d[mij])
{
k=mij;
dr=mij-1;
}
else
{
st=mij+1;
}
}
d[k]=v[i];
ret[i]=k;
}
}
fout<<l<<"\n";
for(i=1;i<=l;i++)
{
fout<<d[i]<<" ";
}
return 0;
}