Pagini recente » Cod sursa (job #1178105) | Cod sursa (job #1316547) | Cod sursa (job #3160382) | Cod sursa (job #1533635) | Cod sursa (job #919166)
Cod sursa(job #919166)
#include<fstream>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
int i,n,nr,v[1001],u[1001],pred[1001],p,ok=1,k=0,af[1001];
int caut(int x){
int i=0,pas=1<<16;
while(pas!=0){
if(i+pas<=nr && v[u[i+pas]]<x) i+=pas;
pas/=2;
}
return i+1;
}
int main(){
in>>n;
for(i=1;i<=n;i++) in>>v[i];
u[++nr]=1;
for(i=2;i<=n;i++){
p=caut(v[i]);
if(p>nr) nr++;
pred[i]=u[p-1];
u[p]=i;
}
out<<nr<<'\n';
p=u[nr];
while(ok){
if(pred[p]==0) ok=0;
af[++k]=v[p];
p=pred[p];
}
for(i=k;i>=1;i--) out<<af[i]<<' ';
return 0;
}