Pagini recente » Cod sursa (job #2815251) | Cod sursa (job #2504401) | Cod sursa (job #1661916) | Cod sursa (job #274836) | Cod sursa (job #324442)
Cod sursa(job #324442)
#include <stdio.h>
#define DIM 100010
int X[DIM], V[DIM], T[DIM];
int n,i,p,u,mid,m;
FILE *g = fopen("scmax.out","w");
void sol(int poz) {
if (poz) {
sol(T[poz]);
fprintf(g,"%d ",V[poz]);
}
}
int main(){
FILE *f = fopen("scmax.in","r");
fscanf(f,"%d",&n);
for (i=1;i<=n;i++)
fscanf(f,"%d",&V[i]);
fclose(f);
X[1] = 1; m = 1;
for (i=2;i<=n;i++) {
p = 1; u = m;
while (p<=u) {
mid = p+(u-p)/2;
// if (V[X[mid]] == V[i])
// break;
if (V[X[mid]] <= V[i])
p = mid + 1;
else
u = mid - 1;
}
if (p>m) {
m++;
X[m] = i;
T[m] = X[m-1];
} else {
if (X[p]>X[i]) {
X[p] = i;
T[p] = X[p-1];
}
}
}
fprintf(g,"%d\n",m);
sol(X[m]);
fclose(g);
return 0;
}