#include <bits/stdc++.h>
#define int long long
using namespace std;
vector <int> istotne;
int b3(int x){
return x*(x-1)*(x-2)/6;
}
int b2(int x){
return x*(x-1)/2;
}
int b1(int x){
return x;
}
int32_t main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t, n, i, j, a, b, m, pre, l, r, k, l2, r2;
cin >> t;
while(t--){
cin >> n;
istotne.clear();
for(i=0; i<n; i++){
cin >> a;
if(a!=0){
istotne.push_back(a);
}
}
l=0;
r=200*istotne.size();
while(l<r){
k=(l+r)/2;
pre=0;
for(i=0; i<istotne.size(); i++){
if(pre==k){
pre++;
break;
}
l2=1;
r2=k-pre;
while(l2<r2){
a=(l2+r2)/2;
if(b3(a)+b2(a)*(k-a)+b1(a)*pre*(k-a-pre)<istotne[i]){
l2=a+1;
}
else{
r2=a;
}
}
a=l2;
if(b3(a)+b2(a)*(k-a)+b1(a)*pre*(k-a-pre)<istotne[i]){
pre=k+1;
break;
}
if(a+pre>k){
pre=k+1;
break;
}
//cout << a << ' ';
pre+=a;
}
if(pre<=k){
r=k;
}
else{
l=k+1;
}
}
cout << l << '\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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | #include <bits/stdc++.h> #define int long long using namespace std; vector <int> istotne; int b3(int x){ return x*(x-1)*(x-2)/6; } int b2(int x){ return x*(x-1)/2; } int b1(int x){ return x; } int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t, n, i, j, a, b, m, pre, l, r, k, l2, r2; cin >> t; while(t--){ cin >> n; istotne.clear(); for(i=0; i<n; i++){ cin >> a; if(a!=0){ istotne.push_back(a); } } l=0; r=200*istotne.size(); while(l<r){ k=(l+r)/2; pre=0; for(i=0; i<istotne.size(); i++){ if(pre==k){ pre++; break; } l2=1; r2=k-pre; while(l2<r2){ a=(l2+r2)/2; if(b3(a)+b2(a)*(k-a)+b1(a)*pre*(k-a-pre)<istotne[i]){ l2=a+1; } else{ r2=a; } } a=l2; if(b3(a)+b2(a)*(k-a)+b1(a)*pre*(k-a-pre)<istotne[i]){ pre=k+1; break; } if(a+pre>k){ pre=k+1; break; } //cout << a << ' '; pre+=a; } if(pre<=k){ r=k; } else{ l=k+1; } } cout << l << '\n'; } return 0; } |
English