Help me in solving POWPM problem

My issue

getting runtime error

My code

#include <bits/stdc++.h>
using namespace std;

int main() {
	int t;cin>>t;
	while(t--){
	   int n;cin>>n;
	   long long a[n];
	   for(int i=0;i<n;i++){
	       cin>>a[i];
	   }
	   long long powers[n+1][n+1];
        for (int i = 0; i < n; i++) {
            powers[a[i]][0] = 1;
            for (int j = 1; j <=n; j++) {
                powers[a[i]][j] = powers[a[i]][j -1] * a[i];
            }
        }
         /*vector<vector<long long>> powers(n, vector<long long>(n + 1, 0));
        for (int i = 0; i < n; i++) {
            powers[a[i]][0] = 1;
            for (int j = 1; j <= n; j++) {
                powers[a[i]][j] = powers[a[i]][j - 1] * a[i];
            }
        }*/
	    int cnt=0;
	   for(int i=0;i<n;i++){
	      for(int j=1;j<=n;j++){
	          if(powers[a[i]][j]<=a[j-1]) cnt++;
	          
	      } 
	   }
	      cout<<cnt<<endl;
	}

}

Problem Link: Powered Parameters Practice Coding Problem - CodeChef

@sahsharma123
plzz refer my c++ code for better understanding

#include <bits/stdc++.h>
using namespace std;

int main() {
	// your code goes here
	int t;
	cin>>t;
	while(t--)
	{
	    long long int n;
	    cin>>n;
	    long long int a[n],ans=0;
	    for(int i=0;i<n;i++)
	    {
	        cin>>a[i];
	    }
	    for(int i=0;i<n;i++)
	    {
	        if(a[i]==1)
	        ans+=n;
	        else
	        {
	            long long int val=1;
	            for(int j=0;j<min(32LL,n);j++)
	            {
	                val*=a[i];
	                if(val>1e9)
	                break;
	                if(val<=a[j])
	                ans++;
	            }
	        }
	    }
	    cout<<ans<<endl;
	}
	return 0;
}