#include <bits/stdc++.h>
using namespace std;
#define st first
#define nd second
#define pb push_back
#define rep(i,a,b) for(int i = a; i <= b; i++)
#define irep(i,a,b) for(int i = a; i >= b; i--)
typedef long long ll;
typedef long double ld;
//typedef __int128 int128;
typedef vector<int> vi;
typedef pair<int,int> pi;
typedef pair<double,double> pd;
typedef pair<ll,ll> pl;
const int max_n = 2e5+7;
ll arr[max_n];
bool check(ll n, ll s){
ll l = 0;
rep(i,1,n){
if(!arr[i]) continue; //puste nas nie interesuja!
ll akt = 0;
while(1){
akt++;
if(l+akt > s) return 0;
ll val = akt*l*(s-akt-l)+akt*(akt-1)/2*(s-akt)+akt*(akt-1)*(akt-2)/6;
if(val >= arr[i]){
l += akt;
break;
}
}
}
return 1;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int t; cin >> t;
while(t--){
int n; cin >> n; rep(i,1,n) cin >> arr[i];
ll l = 1; ll r = 1e6; //suma na wszystko!!!, 1e6 powinno starczyc!
ll ans = 1e9+7; //INF
while(l <= r){
ll s = (l+r+1)/2;
if(check(n,s)){
ans = s;
r = s-1;
}
else l = s+1;
}
cout << ans << '\n';
}
return 0;
}
//g++ -O3 -static -Wall .cpp -std=c++17
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 | #include <bits/stdc++.h> using namespace std; #define st first #define nd second #define pb push_back #define rep(i,a,b) for(int i = a; i <= b; i++) #define irep(i,a,b) for(int i = a; i >= b; i--) typedef long long ll; typedef long double ld; //typedef __int128 int128; typedef vector<int> vi; typedef pair<int,int> pi; typedef pair<double,double> pd; typedef pair<ll,ll> pl; const int max_n = 2e5+7; ll arr[max_n]; bool check(ll n, ll s){ ll l = 0; rep(i,1,n){ if(!arr[i]) continue; //puste nas nie interesuja! ll akt = 0; while(1){ akt++; if(l+akt > s) return 0; ll val = akt*l*(s-akt-l)+akt*(akt-1)/2*(s-akt)+akt*(akt-1)*(akt-2)/6; if(val >= arr[i]){ l += akt; break; } } } return 1; } int main(){ ios::sync_with_stdio(0); cin.tie(0); int t; cin >> t; while(t--){ int n; cin >> n; rep(i,1,n) cin >> arr[i]; ll l = 1; ll r = 1e6; //suma na wszystko!!!, 1e6 powinno starczyc! ll ans = 1e9+7; //INF while(l <= r){ ll s = (l+r+1)/2; if(check(n,s)){ ans = s; r = s-1; } else l = s+1; } cout << ans << '\n'; } return 0; } //g++ -O3 -static -Wall .cpp -std=c++17 |
English