Pagini recente » Cod sursa (job #674044) | Cod sursa (job #2028553) | Cod sursa (job #1735432) | Cod sursa (job #1559604) | Cod sursa (job #1329274)
#include<cstdio>
#include<ctime>
#include<cstdlib>
using namespace std;
int n,i,j,a,nrr,v[100100],p,u,mid,nr,x[100100],s[100100],t[100100];
FILE *f,*g;
int main(){
f=fopen("scmax.in","r");
g=fopen("scmax.out","w");
fscanf(f,"%d%d",&n,&v[1]);
/*fscanf(f,"%d",&n);
srand(time(0));
v[1]=rand();
fprintf(g,"%d ",v[1]);
*/
nr=1;
x[nr]=1;
/*for(i=2;i<=n;i++){
v[i]=rand();
fprintf(g,"%d ",v[i]);
}*/
for(i=2;i<=n;i++){
fscanf(f,"%d",&v[i]);
//v[i]=rand();
//fprintf(g,"%d ",v[i]);
p=1;
u=nr;
while(p<=u){
mid=(p+u)/2;
if(v[i]>v[ x[mid] ])
p=mid+1;
else
u=mid-1;
}
x[p]=i;
t[i]=x[p-1];
if(p>=nr){
nr=p;
}
}
fprintf(g,"%d\n",nr);
a=x[nr];
while(a!=0){
s[++nrr]=a;
a=t[a];
}
for(i=nrr;i>=1;i--){
fprintf(g,"%d ",v[ s[i] ]);
}
fclose(f);
fclose(g);
return 0;
}