Files

72 lines
1.1 KiB
C++

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<ll> 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';
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int t;
cin >> t;
for(int tc = 1; tc <= t; ++tc){
test_case(tc);
}
cout << flush;
return 0;
}