Advertisement
vlatkovski

Odzemanje

Oct 7th, 2017
295
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.45 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5.     string ns; cin >> ns;
  6.     int len = ns.length();
  7.     multiset<int> cif;
  8.     for (int i = 0; i < len; ++i) {
  9.         cif.insert( ns.at(i) - '0' );
  10.     }
  11.     if (*cif.begin() == *prev(cif.end())) {
  12.         cout << 0 << endl;
  13.     } else {
  14.         vector<int> dmg(len, 0);
  15.         vector<int> dgm(len, 0);
  16.         {
  17.             int i = 0;
  18.             for (auto it = cif.begin(); it != cif.end(); ++it) {
  19.                 dmg[i] = *it;
  20.                 dgm[len-i-1] = *it;
  21.                 i++;
  22.             }
  23.         }
  24.         vector<int> dr(len, 0);
  25.         int leftover = 0;
  26.         for (int i = len-1; i >= 0; --i) {
  27.             int r;
  28.             dmg[i] += leftover;
  29.             if (dgm[i] < dmg[i]) {
  30.                 r = 10 + dgm[i] - dmg[i];
  31.                 leftover = 1;
  32.             }
  33.             else {
  34.                 r = dgm[i] - dmg[i];
  35.                 leftover = 0;
  36.             }
  37.             dr[i] = r;
  38.             //cout << "i:" << i << " dmg[i]:" << dmg[i] << " dgm[i]:" << dgm[i] << " r:" << r << " le:" << leftover << endl;
  39.             //cout << "\t";
  40.             //for (int i : dr) cout << i;
  41.             //cout << endl;
  42.         }
  43.         if (leftover) dr[0]--;
  44.         bool started = false;
  45.         for (int i : dr) {
  46.             if (i != 0 && !started) {
  47.                 started = true;
  48.             }
  49.             if (started) cout << i;
  50.         }
  51.     }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement