#include <stdio.h>
int sequence(double *data, int size){
int len = 1;
int i;
for (i = 1 ; i < size ; i++){
int l = -1;
int r = len;
while (r > l+1){
int m = l+r >> 1;
if (data[m] < data[i]) l = m; /* 同じを許すなら <= に変える */
else r = m;
}
data[r] = data[i];
if (len == r){
len++;
}
}
return size - len;
}
int main(void){
double data[] = {3,1,4,1,5,9,2,6,5,3,5};
printf("%d\n", sequence
(data
, sizeof data
/ sizeof data
[0])); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CmludCBzZXF1ZW5jZShkb3VibGUgKmRhdGEsIGludCBzaXplKXsKCWludCBsZW4gPSAxOwoJaW50IGk7Cglmb3IgKGkgPSAxIDsgaSA8IHNpemUgOyBpKyspewoJCWludCBsID0gLTE7CgkJaW50IHIgPSBsZW47CgkJd2hpbGUgKHIgPiBsKzEpewoJCQlpbnQgbSA9IGwrciA+PiAxOwoJCQlpZiAoZGF0YVttXSA8IGRhdGFbaV0pIGwgPSBtOwkvKiDlkIzjgZjjgpLoqLHjgZnjgarjgokgPD0g44Gr5aSJ44GI44KLICovCgkJCWVsc2UgciA9IG07CgkJfQoJCWRhdGFbcl0gPSBkYXRhW2ldOwoJCWlmIChsZW4gPT0gcil7CgkJCWxlbisrOwoJCX0KCX0KCXJldHVybiBzaXplIC0gbGVuOwp9CmludCBtYWluKHZvaWQpewoJZG91YmxlIGRhdGFbXSA9IHszLDEsNCwxLDUsOSwyLDYsNSwzLDV9OwoJcHJpbnRmKCIlZFxuIiwgc2VxdWVuY2UoZGF0YSwgc2l6ZW9mIGRhdGEgLyBzaXplb2YgZGF0YVswXSkpOwoJcmV0dXJuIDA7Cn0K