diff --git a/codeforces/educational_rounds/118/c.cpp b/codeforces/educational_rounds/118/c.cpp index 0c03bec..846442a 100644 --- a/codeforces/educational_rounds/118/c.cpp +++ b/codeforces/educational_rounds/118/c.cpp @@ -2,8 +2,55 @@ using namespace std; -void test_case(int tc){ +typedef long long ll; +vector attacks; + +ll damage(ll k){ + ll result = k; + + for(size_t i = 0; i < attacks.size() - 1; ++i){ + result += min(k, attacks[i+1] - attacks[i]); + } + + return result; +} + +void test_case(int tc){ + cout << "test"; + int n; + ll h; + + cin >> n >> h; + + attacks.clear(); + attacks.reserve(n); + + for(int i = 0; i < n; ++i){ + cin >> attacks[i]; + } + + ll lower = 1, upper = 1e18; + ll middle = (lower + upper) / 2; + ll dx = middle - lower; + ll k; + + while(dx > 0){ + k = damage(middle); + cout << k << " "; + if(k == h){ + break; + } else if(k < h){ + lower = middle + 1; + } else{ + upper = middle; + } + middle = (lower + upper) / 2; + dx = middle - lower; + } + + cout << '\n' << k << '\n'; + }