#include <bits/stdc++.h> using namespace std; #define st first #define nd second typedef long long ll; typedef pair<int,int> pii; typedef pair<ll,ll> pll; const int maxn = 200009; int a[maxn]; int N; bool f(ll X) { ll pop = 0; ll akt = 0; for(int i = 0 ; i < N ; i++) { while(pop*akt*X + (akt*(akt-1))/2*pop + (akt*(akt-1))/2*X + (akt*(akt-1)*(akt-2))/6< a[i]) { akt++; X--; if(X < 0)return false; } pop += akt; akt = 0; } return true; } int bs() { int pocz = 0 , kon = (1e+6)*100+9 , sro; while(kon-pocz > 1) { sro = (pocz+kon)/2; if(f(sro))kon = sro; else pocz = sro; } return kon; } void solve() { cin >> N; for(int i = 0; i < N ; i++) { cin >> a[i]; } cout << bs() << '\n'; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int te; cin >> te; while(te--) { solve(); } 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 | #include <bits/stdc++.h> using namespace std; #define st first #define nd second typedef long long ll; typedef pair<int,int> pii; typedef pair<ll,ll> pll; const int maxn = 200009; int a[maxn]; int N; bool f(ll X) { ll pop = 0; ll akt = 0; for(int i = 0 ; i < N ; i++) { while(pop*akt*X + (akt*(akt-1))/2*pop + (akt*(akt-1))/2*X + (akt*(akt-1)*(akt-2))/6< a[i]) { akt++; X--; if(X < 0)return false; } pop += akt; akt = 0; } return true; } int bs() { int pocz = 0 , kon = (1e+6)*100+9 , sro; while(kon-pocz > 1) { sro = (pocz+kon)/2; if(f(sro))kon = sro; else pocz = sro; } return kon; } void solve() { cin >> N; for(int i = 0; i < N ; i++) { cin >> a[i]; } cout << bs() << '\n'; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int te; cin >> te; while(te--) { solve(); } return 0; } |