#include <iostream>
#include <array>
using namespace std;
int main() {
array<float,4> hps{20, 20, 40, 50};
array<float,5> damages={30, 20, 10, 24, 47};
for(float d : damages) {
float hpsum = 0;
for(float h : hps)
hpsum += h;
if(d > hpsum) {
cout << "all dead";
return 0;
}
float div = hpsum / hps.size();
for(int i=0; i<hps.size(); i++) {
float dmg = d/(hps.size()-i);
if(hps[i] < dmg)
dmg = hps[i];
hps[i] -= dmg;
d -= dmg;
}
cout << "hps: ";
for(float h : hps)
cout << " " << h;
cout << " == all alive" << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YXJyYXk+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCWFycmF5PGZsb2F0LDQ+IGhwc3syMCwgMjAsIDQwLCA1MH07CglhcnJheTxmbG9hdCw1PiBkYW1hZ2VzPXszMCwgMjAsIDEwLCAyNCwgNDd9OwoJZm9yKGZsb2F0IGQgOiBkYW1hZ2VzKSB7CgkJZmxvYXQgaHBzdW0gPSAwOwoJCWZvcihmbG9hdCBoIDogaHBzKQoJCQlocHN1bSArPSBoOwoJCWlmKGQgPiBocHN1bSkgewoJCQljb3V0IDw8ICJhbGwgZGVhZCI7CgkJCXJldHVybiAwOwoJCX0KCQlmbG9hdCBkaXYgPSBocHN1bSAvIGhwcy5zaXplKCk7CgkJZm9yKGludCBpPTA7IGk8aHBzLnNpemUoKTsgaSsrKSB7CgkJCWZsb2F0IGRtZyA9IGQvKGhwcy5zaXplKCktaSk7CgkJCWlmKGhwc1tpXSA8IGRtZykKCQkJCWRtZyA9IGhwc1tpXTsKCQkJaHBzW2ldIC09IGRtZzsKCQkJZCAtPSBkbWc7CgkJfQoJCWNvdXQgPDwgImhwczogIjsKCQlmb3IoZmxvYXQgaCA6IGhwcykgCgkJCWNvdXQgPDwgIiAiIDw8IGg7CgkJY291dCA8PCAiID09IGFsbCBhbGl2ZSIgPDwgZW5kbDsKCX0KCXJldHVybiAwOwp9