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
#include <iostream>
#include <vector>

using namespace std;

bool check(vector<int>& vec, int res)
{
    int pos = 0;
    long long left = vec[0];
    int n = vec.size();
    for(int i=0; i<res; i++)
    {
//        cout<<pos<<" "<<i<<"\n";
        while(left <= 0)
        {
            if(pos == n-1)
                break;
            left = vec[++pos];
        }
        if(left <= 0)
            break;
        left -= (long long)i * (res-i-1);
    }
    return left<=0;
}

int bs(vector<int>& vec)
{
    int l=0, r=250000;
    while(r>l)
    {
        int m = (l+r)/2;
        if(check(vec, m))
            r = m;
        else
            l = m+1;
    }
    return l;
}

int main()
{
    cin.tie(0)->sync_with_stdio(0);
    int t;
    cin>>t;
    while(t--)
    {
        int n;
        cin>>n;
        vector<int> vec(n);
        for(auto& x : vec)
            cin>>x;
        cout<<bs(vec)<<"\n";
    }
}