SHARE
TWEET

Untitled

a guest Apr 25th, 2019 71 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <map>
  3.  
  4. int main(int argc, const char *argv[]) {
  5.     int n, p, q, nHits = 0, hp;
  6.     std::array<int, 200000> indexToHp;
  7.    
  8.     std::cin >> n >> p >> q;
  9.     int max = 0;
  10.     int maxpos;
  11.     int min = 1000000001;
  12.     int minpos;
  13.     for (int i = 0; i < n; i++) {
  14.         std::cin >> hp;
  15.         if (hp > max) {
  16.             max = hp;
  17.             maxpos = i;
  18.         }
  19.         if (hp < min && hp > 0) {
  20.            min = hp;
  21.            minpos = i;
  22.         }
  23.         indexToHp[i] = hp;
  24.     }
  25.     while(max != 0) {
  26.         nHits++;
  27.         if(p >= q) {
  28.             indexToHp[maxpos] = indexToHp[maxpos] - p + q;
  29.             max = 0;
  30.             for(auto it = indexToHp.begin(); it != indexToHp.end(); it++) {
  31.                 (*it) -= q;
  32.                 if((*it) > max) {
  33.                     max = (*it);
  34.                     maxpos = it - indexToHp.begin();
  35.                 }
  36.                 if ((*it) < min && (*it) > 0) {
  37.                     min = (*it);
  38.                     minpos = it - indexToHp.begin();
  39.                 }
  40.                 if ((*it) < 0) (*it) = 0;
  41.             }
  42.         }
  43.         else {
  44.             indexToHp[minpos] = indexToHp[minpos] - p + q;
  45.             min = 0;
  46.             for(auto it = indexToHp.begin(); it != indexToHp.end(); it++) {
  47.                 (*it) -= q;
  48.                 if((*it) > max) {
  49.                     max = (*it);
  50.                     maxpos = it - indexToHp.begin();
  51.                 }
  52.                 if ((*it) < min && (*it) > 0) {
  53.                     min = (*it);
  54.                     minpos = it - indexToHp.begin();
  55.                 }
  56.                 if ((*it) < 0) (*it) = 0;
  57.             }
  58.         }
  59.     }
  60.     std::cout << nHits << std::endl;
  61. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top