func_code_string: #include <bits/stdc++.h>   using namespace std;   bool cmp(const pair<int, pair<int, int>> a, const pair<int, pair<int, int>> b) {     if (a.first == b.first) {       return a.second.first > b.second.first;     } else {       return a.first < b.first;     }   }   int main() {     ios_base::sync_with_stdio(false);     int n, k;     cin >> n >> k;     vector<int> be(n);     vector<int> en(n);     for (int i = 0; i < n; i++) {       cin >> be[i] >> en[i];     }     int L = 0;     int R = 1e9 + 1e9 + 5;     while (R - L > 1) {       int mid = L + (R - L) / 2;       vector<pair<int, pair<int, int>>> even;       for (int i = 0; i < n; i++) {         long long nooow = (long long)en[i] - mid + 1;         if (be[i] <= nooow) {           even.push_back({be[i], {1, 0}});           even.push_back({nooow, {-1, 0}});         }       }       sort(even.begin(), even.end(), cmp);       int bal = 0;       bool good = false;       for (int i = 0; i < even.size(); i++) {         bal += even[i].second.first;         if (bal >= k) {           good = true;         }       }       if (good) {         L = mid;       } else {         R = mid;       }     }     vector<pair<int, pair<int, int>>> even;     for (int i = 0; i < n; i++) {       long long nooow = (long long)en[i] - L + 1;       if (be[i] <= nooow) {         even.push_back({be[i], {1, i}});         even.push_back({nooow, {-1, i}});       }     }     sort(even.begin(), even.end(), cmp);     vector<int> ans;     ans.push_back(1);     int ind = 0;     for (int i = 1; i < even.size(); i++) {       if (even[i].second.first == 1) {         ans.push_back(ans[i - 1] + 1);       } else {         ans.push_back(ans[i - 1] - 1);       }       if (ans[i] == k) {         ind = i;         break;       }     }     if (L == 0) {       cout << 0 << endl;       for (int i = 0; i < k; i++) {         cout << i + 1 <<    ;       }     } else {       cout << L << endl;       set<int> answer;       for (int i = 0; i <= ind; i++) {         if (even[i].second.first == 1) {           answer.insert(even[i].second.second);         } else {           answer.erase(even[i].second.second);         }       }       for (set<int>::iterator it = answer.begin(); it != answer.end(); it++) {         cout << *it + 1 <<    ;       }     }     return 0;   }   