Advertisement
vlatkovski

Podaroci [државен '12] (nedovrseno)

Oct 9th, 2017
341
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.98 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. set<int> k;
  5. double avg;
  6. int cnt;
  7.  
  8. int main() {
  9.     int n;
  10.     cin >> n;
  11.     avg = 0;
  12.     cnt = 0;
  13.     for (int i = 0; i < n; ++i) {
  14.         int x;
  15.         cin >> x;
  16.         avg += x;
  17.         k.insert(x);
  18.     }
  19.     avg /= n;
  20.     if (floor(avg) != avg) {
  21.         cout << "GRESHKA";
  22.     } else {
  23.         cout << "avg:" << avg << endl;
  24.         {
  25.             auto it = k.find(avg);
  26.             while (it != k.end() && *it == avg) {
  27.                 k.erase(it);
  28.                 it++;
  29.             }
  30.         }
  31.         for (auto it=k.begin(); it!=k.end(); ++it) cout << *it << " ";
  32.         cout << endl;
  33.         while (!k.empty()) {
  34.             auto itl = prev(k.end());
  35.             auto itp = k.begin();
  36.             int l = *itl;
  37.             int p = *itp;
  38.             if (l > avg) {
  39.                 int r = l - avg;
  40.                 l = avg;
  41.                 p += r;
  42.                 cnt += r;
  43.                 k.erase(itl);
  44.                 k.erase(itp);
  45.                 if (p > avg) {
  46.                     int r1 = p - avg;
  47.                     l += r1;
  48.                     p = avg;
  49.                     cnt -= r1;
  50.                     k.insert(l);
  51.                 } else {
  52.                     k.insert(p);
  53.                 }
  54.             }
  55.             else if (p < avg) {
  56.                 int r = avg - p;
  57.                 p = avg;
  58.                 l -= r;
  59.                 cnt += r;
  60.                 k.erase(itl);
  61.                 k.erase(itp);
  62.                 if (l < avg) {
  63.                     int r1 = avg - l;
  64.                     p -= r1;
  65.                     l = avg;
  66.                     cnt -= r1;
  67.                     k.insert(p);
  68.                 } else {
  69.                     k.insert(l);
  70.                 }
  71.             }
  72.             else {
  73.                 break;
  74.             }
  75.             for (auto it=k.begin(); it!=k.end(); ++it) cout << *it << " ";
  76.             cout << endl;
  77.         }
  78.         cout << cnt;
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement