func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long M = 2 * (1e5) + 7, mod = 1e9 + 7;   signed main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     cout.tie(NULL);     ;     {       long long n, x1, x2;       cin >> n >> x1 >> x2;       vector<pair<long long, long long>> v;       v.push_back({-1, -1});       for (long long i = 1; i <= n; i++) {         long long x;         cin >> x;         v.push_back({x, i});       }       sort(v.begin(), v.end());       bool ok = 0;       for (long long i = 1; i <= n - 1; i++) {         long long lo = i, hi = n - 1;         while (lo <= hi) {           long long mid = (lo + hi) / 2;           long long x = (mid - i + 1);           long long y = (n - mid);           long long lo1 = v[i].first, lo2 = v[mid + 1].first;           long double p = x1 / (long double)x;           long double q = x2 / (long double)y;           if (lo1 >= p && lo2 >= q) {             ok = 1;             cout <<  Yes                   <<   n ;             cout << x <<     << y <<   n ;             for (long long j = i; j <= mid; j++) {               cout << v[j].second <<    ;             }             cout <<   n ;             for (long long j = mid + 1; j <= n; j++) {               cout << v[j].second <<    ;             }             cout <<   n ;             return 0;           }           if (p <= lo1)             hi = mid - 1;           else             lo = mid + 1;         }       }       swap(x1, x2);       for (long long i = 1; i <= n - 1; i++) {         long long lo = i, hi = n - 1;         while (lo <= hi) {           long long mid = (lo + hi) / 2;           long long x = (mid - i + 1);           long long y = (n - mid);           long long lo1 = v[i].first, lo2 = v[mid + 1].first;           long double p = x1 / (long double)x;           long double q = x2 / (long double)y;           if (lo1 >= p && lo2 >= q) {             ok = 1;             cout <<  Yes                   <<   n ;             cout << y <<     << x <<   n ;             for (long long j = mid + 1; j <= n; j++) {               cout << v[j].second <<    ;             }             cout <<   n ;             for (long long j = i; j <= mid; j++) {               cout << v[j].second <<    ;             }             cout <<   n ;             return 0;           }           if (p <= lo1)             hi = mid - 1;           else             lo = mid + 1;         }       }       if (!ok)         cout <<  No               <<   n ;     }     return 0;   }   