func_code_string: #include <bits/stdc++.h>   using namespace std;   const int INF = 1e9 + 23;   const int MOD = 1e9 + 9;   const int MAXN = 1e3 + 100;   struct item {     int val, type, id;     bool operator<(const item &rhs) const { return val > rhs.val; }   };   vector<item> items[2];   vector<item> cart[MAXN];   int main() {     ios_base::sync_with_stdio(0);     int n, k;     cin >> n >> k;     for (int i = 0; i < n; ++i) {       item it;       it.id = i + 1;       cin >> it.val >> it.type;       items[it.type - 1].push_back(it);     }     for (int i = 0; i < 2; ++i) {       sort(items[i].begin(), items[i].end());     }     for (int i = 0; i < min((int)items[0].size(), k); ++i) {       cart[i].push_back(items[0][i]);     }     for (int i = k; i < items[0].size(); ++i) {       cart[k - 1].push_back(items[0][i]);     }     int pnr = items[1].size() - 1, cnr = k - 1;     while (cnr >= 0 && cart[cnr].size() == 0) {       cart[cnr--].push_back(items[1][pnr--]);     }     int pi = 0, ci = 0;     while (pi <= pnr) {       if (ci == k - 1 || cart[ci][0].val <= items[1][pi].val) {         cart[ci].push_back(items[1][pi++]);       } else {         ++ci;       }     }     double anssum = 0;     for (int i = 0; i < k; ++i) {       bool stool = false;       int mn = INF;       for (auto it : cart[i]) {         if (it.type == 1) stool = true;         mn = min(mn, it.val);         anssum += it.val;       }       if (stool) {         anssum -= mn / 2.0;       }     }     cout.precision(1);     cout << fixed << anssum <<   n ;     for (int i = 0; i < k; ++i) {       cout << cart[i].size();       for (auto it : cart[i]) {         cout <<     << it.id;       }       cout <<   n ;     }     return 0;   }   