Pagini recente » Cod sursa (job #1878516) | Cod sursa (job #2344258) | Cod sursa (job #857523) | Cod sursa (job #2156435)
#include <fstream>
using namespace std;
ifstream f ("scmax.in");
ofstream g ("scmax.out");
int n,i,a[100002],st[100002],l[100002],poz,vf,Max,pMax,vfsol,sol[100002];
int cautbin (int k,int val)
{
int sta=1,dr=k,mij,poz=0;
while (sta<=dr)
{
mij=(sta+dr)/2;
if (st[mij]<val) sta=mij+1;
else if (st[mij]>val)
{
dr=mij-1;
poz=mij;
}
else
{
poz=mij;
break;
}
}
return poz;
}
int main()
{
f>>n;
for (i=1;i<=n;i++)
{
f>>a[i];
}
vf=0;
for (i=1;i<=n;i++)
{
poz=cautbin(vf,a[i]);
if(poz==0)
{
vf++;
st[vf]=a[i];
poz=vf;
}
else st[poz]=a[i];
l[i]=poz;
if (l[i]>Max)
{
pMax=i;
Max=l[i];
}
}
g<<Max<<'\n';
vfsol=1;
sol[1]=a[pMax];
Max--;
for (i=pMax-1;i>=1;i--)
{
if (l[i]==Max && a[i]<sol[vfsol])
{
vfsol++;
sol[vfsol]=a[i];
Max--;
}
}
for (i=vfsol;i>=1;i--) g<<sol[i]<<" ";
return 0;
}