Pagini recente » Cod sursa (job #2924524) | Cod sursa (job #2155568) | Cod sursa (job #499625) | Cod sursa (job #2590565) | Cod sursa (job #797630)
Cod sursa(job #797630)
#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])
p = mid + 1;
else
u = mid - 1;
}
if (p>u) {
if (p>m)
m++;
X[p] = i;
T[i] = X[p-1];
}
}
fprintf(g,"%d\n",m);
sol(X[m]);
fclose(g);
return 0;
}