Pagini recente » Cod sursa (job #2596373) | Cod sursa (job #1136406) | Cod sursa (job #625081) | Cod sursa (job #3271420) | Cod sursa (job #2864227)
#include<bits/stdc++.h>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int v[100001],poz[100001],sol[100001],n;//poz=pozitia valorilor din subsirul cautat
int main()
{f>>n;
int i;
for (i=1;i<=n;i++) f>>v[i];
int st=1,dr,mij,p,l=0;
for (i=1;i<=n;i++) {st=1;
dr=l;
while (st<=dr) {mij=(st+dr)/2;
if (v[poz[mij]]<v[i]) st=mij+1;
else dr=mij-1;
}
p=st;
if (p>l) l=p;
poz[p]=i;
sol[i]=poz[p-1];
//for (int i=1;i<=l;i++) cout<<poz[i]<<' ';
//cout<<'\n';
}
g<<l<<'\n';
for (int i=1;i<=l;i++) g<<v[poz[i]]<<' ';
}