Help me in solving SUBINC problem

My issue

Runtime error

My code

#include <stdio.h>

long long factorial(int n) {
    long long result = 1;
    for (int i = 1; i <= n; ++i)
        result *= i;
    return result;
}

long long nC2(int n)
{
    long long result = factorial(n) / (2 * factorial(n - 2));
    return result;
}

int main()
{
	int T;
	scanf("%d",&T);
	while (T--)
	{
        long long N, j=0, sum=0;
        scanf("%lld",&N);
        int *A = (int *)malloc(N * sizeof(int));
        int B[N];
        scanf("%d",&A[0]);
        B[j++]= 0;
        for (int i = 1; i < N; i++) {
            scanf("%d",&A[i]);
            if (A[i] < A[i-1])
                B[j++] = i;
        }
        B[j++]= N;
        for (int i = 1; i < j; i++) {
            if ((B[i] - B[i-1])>0)
                sum+= nC2((B[i] - B[i-1]) + 1);
        }
        printf("%lld\n",sum);
	}
	return 0;
}


Learning course: Dynamic programming
Problem Link: Count Subarrays Practice Problem in Dynamic programming - CodeChef

@thepritamshaw
plzz refer my c++ code for better understanding of the logic

#include <iostream>
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];
	    for(int i=0;i<n;i++)
	    {
	        cin>>a[i];
	    }
	    long long int cnt=1,ans=0;
	    for(int i=1;i<n;i++)
	    {
	        if(a[i]>=a[i-1])
	        {
	            cnt++;
	        }
	        else
	        {
	            ans+=(cnt*(cnt+1))/2;
	            cnt=1;
	        }
	    }
	    ans+=(cnt*(cnt+1))/2;
	 cout<<ans<<endl;
	}
	return 0;
}