Pagini recente » Cod sursa (job #746917) | Cod sursa (job #1216599) | Cod sursa (job #3218668) | Cod sursa (job #3199647) | Cod sursa (job #1083825)
#include <fstream>
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
int x[100010], v[100010],n,p,u,mij,k,i,t[100010],j,r[100010];
int main () {
fin>>n;
fin>>v[1];
x[0]=-1;
x[++k]=1;
t[1]=-1;
for (i=2;i<=n;i++) {
fin>>v[i];
p=1;u=k;
while (p<=u) {
mij=(p+u)/2;
if (v[x[mij]]<v[i])
p=mij+1;
else
u=mij-1;
}
x[p]=i;
t[i]=x[p-1];
if (p>k)
k++;
}
fout<<k<<"\n";
u=x[k];
while (u!=-1){
r[++j]=v[u];
u=t[u];
}
for (i=k;i>=1;i--)
fout<<r[i]<<" ";
return 0;
}