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
#include <bits/stdc++.h>
using namespace std;
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cerr.tie(0);
    int t;
    cin>>t;
    for(int u =0 ;u<t;u++)
    {
        int n;
        cin>>n;
        int a[n];
        for(int i = 0;i<n;i++)
        {
            cin>>a[i];
        }
        long long l = 0;
        long long r = 1e6;
        while(l+1 < r)
        {
            long long mid = (l+r)/2;
            long long p = 0;
            bool q = false;
            for(int i =0;i<n;i++)
            {
                long long l2 = -1;
                long long r2 = min(mid - p,(long long)200);
                while(l2 + 1 < r2)
                {
                    long long mid2 = (l2+r2)/2;
                    if( mid2*(mid2-1)*(mid2-2)/6 + mid2*(mid2-1)*(mid-mid2)/2 + mid2*p*(mid-mid2-p) < a[i])
                    {
                        l2 = mid2;
                    }
                    else
                    {
                        r2 = mid2;
                    }
                }
                if(r2*(r2-1)*(r2-2)/6 + r2*(r2-1)*(mid-r2)/2 + r2*p*(mid-r2-p) < a[i])
                {
                    //cout<<r2<<" "<<r2*(r2-1)*(r2-2)/6 + r2*(r2-1)*(mid-r2)/2 + r2*p*(mid-r2-p)<<"\n";
                    q = true;
                }
                p+=r2;
            }
            if(q)
            {
                l = mid;
            }
            else
            {
                r = mid;
            }
        }
        cout<<r<<"\n";
    }
}