func_code_string: #include <bits/stdc++.h>   using namespace std;   template <class T>   inline int countbit(T n) {     return (n == 0) ? 0 : (1 + countbit(n & (n - 1)));   }   template <class T>   inline T gcd(T a, T b) {     return b ? gcd(b, a % b) : a;   }   const double EPS = 1e-9;   const double PI = acos(-1.0);   int n, k, h;   int ind[100005];   int vel[100005];   int mass[100005];   int ret[100005];   bool can(double mid) {     int cnt = 0;     double step = k;     for (int j = n - 1; j >= 0 && cnt <= k; j--) {       double tempo = step * h / ((double)vel[ind[j]]);       if (tempo < mid - EPS || fabs(tempo - mid) < EPS) cnt++, step--;     }     return cnt >= k;   }   bool cmp(int i, int j) {     if (mass[i] != mass[j]) return mass[i] < mass[j];     return vel[i] < vel[j];   }   int main(void) {     scanf( %d %d %d , &n, &k, &h);     for (int i = (0); i < int(n); i++) scanf( %d , &mass[i]);     for (int i = (0); i < int(n); i++) scanf( %d , &vel[i]);     for (int i = (0); i < int(n); i++) ind[i] = i;     sort(ind, ind + n, cmp);     double l = 0, r = 10E9 + 100;     for (int i = (0); i < int(100); i++) {       double mid = (l + r) / 2;       if (can(mid))         r = mid;       else         l = mid;     }     double mid = r, step = k;     int p = k - 1;     for (int j = n - 1; j >= 0 && p >= 0; j--) {       double tempo = step * h / ((double)vel[ind[j]]);       if (tempo < mid - EPS || fabs(tempo - mid) < EPS) {         step--;         ret[p--] = ind[j] + 1;       }     }     for (int i = (0); i < int(k); i++) {       if (i) printf(   );       printf( %d , ret[i]);     }     printf(  n );     return 0;   }   