#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 2e5 + 5;
int n;
ll w[N];
int main(){
cin.tie(0)->sync_with_stdio(0);
int tt;
cin >> tt;
while(tt--){
cin >> n;
for(int i=0;i<n;i++){
cin >> w[i];
}
ll l = 0;
ll r = 2e6;
ll res = 2e6;
while(l <= r){
ll mid = (l+r)/2;
ll it = 0;
bool f = true;
for(int i=0;i<n;i++){
ll cur = 0;
while(it < mid && cur < w[i]){
cur += 1LL * it * (mid-it-1);
it++;
}
if(cur < w[i]){
f = false;
break;
}
}
if(f){
res = mid;
r = mid - 1;
}
else{
l = mid + 1;
}
}
cout << res << "\n";
}
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | #include <bits/stdc++.h> using namespace std; using ll = long long; const int N = 2e5 + 5; int n; ll w[N]; int main(){ cin.tie(0)->sync_with_stdio(0); int tt; cin >> tt; while(tt--){ cin >> n; for(int i=0;i<n;i++){ cin >> w[i]; } ll l = 0; ll r = 2e6; ll res = 2e6; while(l <= r){ ll mid = (l+r)/2; ll it = 0; bool f = true; for(int i=0;i<n;i++){ ll cur = 0; while(it < mid && cur < w[i]){ cur += 1LL * it * (mid-it-1); it++; } if(cur < w[i]){ f = false; break; } } if(f){ res = mid; r = mid - 1; } else{ l = mid + 1; } } cout << res << "\n"; } return 0; } |
English