fork download
  1. #include <stdio.h>
  2. int sequence(double *data, int size){
  3. int len = 1;
  4. int i;
  5. for (i = 1 ; i < size ; i++){
  6. int l = -1;
  7. int r = len;
  8. while (r > l+1){
  9. int m = l+r >> 1;
  10. if (data[m] < data[i]) l = m; /* 同じを許すなら <= に変える */
  11. else r = m;
  12. }
  13. data[r] = data[i];
  14. if (len == r){
  15. len++;
  16. }
  17. }
  18. return size - len;
  19. }
  20. int main(void){
  21. double data[] = {3,1,4,1,5,9,2,6,5,3,5};
  22. printf("%d\n", sequence(data, sizeof data / sizeof data[0]));
  23. return 0;
  24. }
  25.  
Success #stdin #stdout 0s 4488KB
stdin
Standard input is empty
stdout
7