Pagini recente » Cod sursa (job #1987708) | Cod sursa (job #3253639) | Cod sursa (job #393099) | Cod sursa (job #824126) | Cod sursa (job #1414622)
#include <stdio.h>
#define MAXN 100005
FILE *f=fopen("scmax.in","r"), *g=fopen("scmax.out","w");
int N, HQ=0, v[MAXN], Q[MAXN], P[MAXN], Sol[MAXN], Poz;
int Pune( int nr ){
int p, u, mij;
if( nr > Q[HQ] ){ Q[++HQ] = nr; return HQ; }
p = 1; u = HQ;
while( p <= u ){
mij = (p+u)/2;
if( Q[mij-1] < nr && nr <= Q[mij] ){
Q[mij] = nr;
return mij;
}
else if( nr < Q[mij-1] )
u = mij - 1;
else
p = mij + 1;
}
printf("IESE");
}
void Citire(){
int i, x;
fscanf(f,"%d\n",&N);
for(i=1;i<=N;i++){
fscanf(f,"%d",&v[i]);
P[i] = Pune(v[i]);
}
}
void Afisare(){
int i;
Poz = HQ;
for(i=N;i>=1;i--){
if( P[i] == Poz )
Sol[Poz--] = v[i];
}
fprintf(g,"%d\n",HQ);
for(i=1;i<=HQ;i++)
fprintf(g,"%d ",Sol[i]);
}
int main(){
Citire();
Afisare();
return 0;
}