Pagini recente » Cod sursa (job #2913677) | Cod sursa (job #1751873) | Cod sursa (job #1495898) | Cod sursa (job #2270461) | Cod sursa (job #1254330)
#include <iostream>
#include <cstdio>
using namespace std;
int s,d,mij,a,V[100000],P[100000],n,lungime,m;
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%ld",&n);
for (int i=1;i<=n;i++)
{
scanf("%d",&a);
if (V[lungime]<a)
{
lungime++;
V[lungime]=a;
P[i]=lungime;
}
else
{
s=1;
d=lungime;
m=(s+d)/2;
while (s<=d)
{
if (V[s-1]<a&&V[s]>=a) {V[m]=a;P[a]=i;break;}
else if (V[m]<a) {s=m+1;m=(s+d)/2;}
else {d=m-1;m=(s+d)/2;}
}
}
}
printf("%d\n",lungime);
for (int i=1;i<=lungime;i++)
printf("%d ",V[i]);
}