Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define all(X) (X).begin(), (X).end()
- #define pb push_back
- #define rall(X) (X).rbegin(), (X).rend()
- #define ll long long
- #define ull unsigned long long
- #define ld long double
- #define fir first
- #define sec second
- int main() {
- ll n,k; cin >> n >> k;
- vector<ll> a(n);
- map<ll, set<ll>> mp;
- ll mx = LLONG_MIN, mn = LLONG_MAX;
- for (ll i = 0; i < n; i++) {
- cin >> a[i];
- mp[a[i]].insert(i);
- mx = max(mx, a[i]);
- mn = min(mn, a[i]);
- }
- vector<pair<ll, ll>> ans;
- while (k > 0 && mx - mn > 1) {
- k--;
- ll pos1 = *mp[mx].begin();
- ll pos2 = *mp[mn].begin();
- mp[mx - 1].insert(pos1);
- mp[mx].erase(pos1);
- mp[mn + 1].insert(pos2);
- mp[mn].erase(pos2);
- ans.pb({pos1 + 1, pos2 + 1});
- while (mp[mx].size() == 0)
- mx--;
- while(mp[mn].size() == 0)
- mn++;
- }
- cout << mx - mn << " " << ans.size() << '\n';
- for (ll i = 0; i < ans.size(); i++) {
- cout << ans[i].fir << " " << ans[i].sec << '\n';
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement