#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int minSteps(vector<int> piles) {
int steps = 0;
while (true) {
int tallest = *max_element(piles.begin(), piles.end());
int secondTallest = -1;
for (int h : piles) {
if (h < tallest)
secondTallest = max(secondTallest, h);
}
if (secondTallest == -1)
break;
for (int i = 0; i < piles.size(); i++) {
if (piles[i] == tallest) {
piles[i] = secondTallest;
steps++;
break;
}
}
}
return steps;
}
int main() {
vector<int> piles = {5,5,2,1};
cout << minSteps(piles);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1pblN0ZXBzKHZlY3RvcjxpbnQ+IHBpbGVzKSB7CgogICAgaW50IHN0ZXBzID0gMDsKCiAgICB3aGlsZSAodHJ1ZSkgewoKICAgICAgICBpbnQgdGFsbGVzdCA9ICptYXhfZWxlbWVudChwaWxlcy5iZWdpbigpLCBwaWxlcy5lbmQoKSk7CgogICAgICAgIGludCBzZWNvbmRUYWxsZXN0ID0gLTE7CgogICAgICAgIGZvciAoaW50IGggOiBwaWxlcykgewogICAgICAgICAgICBpZiAoaCA8IHRhbGxlc3QpCiAgICAgICAgICAgICAgICBzZWNvbmRUYWxsZXN0ID0gbWF4KHNlY29uZFRhbGxlc3QsIGgpOwogICAgICAgIH0KCiAgICAgICAgaWYgKHNlY29uZFRhbGxlc3QgPT0gLTEpCiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBpbGVzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgIGlmIChwaWxlc1tpXSA9PSB0YWxsZXN0KSB7CiAgICAgICAgICAgICAgICBwaWxlc1tpXSA9IHNlY29uZFRhbGxlc3Q7CiAgICAgICAgICAgICAgICBzdGVwcysrOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIHN0ZXBzOwp9CgppbnQgbWFpbigpIHsKCiAgICB2ZWN0b3I8aW50PiBwaWxlcyA9IHs1LDUsMiwxfTsKCiAgICBjb3V0IDw8IG1pblN0ZXBzKHBpbGVzKTsKICAgIAogICAgcmV0dXJuIDA7Cn0=