とりあえずいくつか足して貪欲に変換していったら通った。
- const int M = 10000000 + 1;
- class PouringWater {
- public:
- int getMinBottles(int N, int K)
- {
- if (N < K) return 0;
- const int B = 30;
- for (int m = 0; m <= M; ++m) {
- lli n = m + N;
- lli b = n;
- for (int i = 0; i + 1 < B; ++i) {
- b -= n;
- b += (n % 2) + (n / 2);
- n /= 2;
- if (b <= K) return m;
- }
- }
- return -1;
- }
- };