72 lines
1.1 KiB
C++
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;
|
|
} |