Pagini recente » Istoria paginii utilizator/bosni_e_gay | Cod sursa (job #1214343) | Cod sursa (job #1731445) | Cod sursa (job #1644260) | Cod sursa (job #2354994)
#include <fstream>
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
int n, i, mxi, poz[100010], C[100010], a[100010], maxi, mx, j, nr, x, st, dr, mj, pz, k, px;
int main()
{
fin>>n;
fin>>x;
poz[1]=1;
C[1]=x;
a[1]=x;
for (i=2; i<=n; i++)
{
fin>>x;
a[i]=x;
if (x>C[k])
{
k++;
C[k]=x;
poz[i]=k;
}
else
{
st=1; dr=k;
while (st<dr)
{
mj=(st+dr)/2;
if (C[mj]==x)
{
pz=mj;
break;
}
else
if (C[mj]<x)
dr=mj-1;
else
st=mj+1;
}
pz=st;
while (C[pz]==x)
pz++;
C[pz]=x;
poz[i]=pz;
}
}
for (i=n; i>=1; i--)
if (poz[i]>mx)
{
mx=poz[i];
px=i;
}
fout<<mx<<'\n';
mxi=mx;
C[1]=a[px];
j=1;
j++;
for (i=px-1; i>=1; i--)
{
if (poz[i]==mx-1)
{
C[j]=a[i];
j++;
mx--;
}
}
for (j=mxi; j>=1; j--)
fout<<C[j]<<' ';
return 0;
}