Pagini recente » Solutii FMI No Stress 4 | Cod sursa (job #1924540) | Cod sursa (job #174484) | Cod sursa (job #2866969) | Cod sursa (job #473406)
Cod sursa(job #473406)
#include <cstdio>
#define DN 100004
int n,lg,sir[DN],q[DN],poz[DN];
int adaugare(int x,int st,int dr) {
if(st==dr) {
if(dr>lg) ++lg;
q[st]=x;
return st;
}
int mij=(st+dr)/2;
if(x<=q[mij]) return adaugare(x,st,mij);
else return adaugare(x,mij+1,dr);
}
int main()
{
int i;
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(i=1; i<=n; ++i) scanf("%d",&sir[i]);
int k=n;
for(i=1; i<=n; ++i) poz[i]=adaugare(sir[i],1,lg+1);
for(i=lg;i;--i) {
for( ;poz[k]!=i;--k);
q[i]=sir[k];
}
printf("%d\n",lg);
for(i=1; i<=lg; ++i) printf("%d ",q[i]);
return 0;
}