Help me in solving ALTARAY problem

My issue

time limit is exceeding

My code

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

int main() {
	int t,c;
	cin>>t;
	while(t--)
	{
	    int n,a;
	    cin>>n;
	    int* ptr= new int[n]; 
	    for(int i=0;i<n;i++)
	    {
	        cin>>a;
	        ptr[i]=a/abs(a);
	    }
	    
	    for(int i=0;i<n;i++)
	    {
	        c=1;
	        for(int j=i;j<n;j++)
	        {
	            if(ptr[j]+ptr[j+1]==0)
	            {
	                c++;
	            }
	            else{
	                j=n;
	            }
	            ptr[i]=c;
	        }
	    }
	    for(int i=0;i<n;i++)
	    cout<<ptr[i]<<" ";
	    cout<<endl;
	}
}

Learning course: Dynamic programming
Problem Link: Alternating subarray prefix Practice Problem in Dynamic programming - CodeChef

@logical_lady
u have to do it in O(N) not O(N^2)
plzz refer my solution

#include <iostream>
using namespace std;

int main() {
	// your code goes here
	int t;
	cin>>t;
	while(t--)
	{
	    int n;
	    cin>>n;
	    long long int a[n];
	    for(int i=0;i<n;i++)
	    {
	        cin>>a[i];
	    }
	    int dp[n];
	    dp[n-1]=1;
	    for(int i=n-2;i>=0;i--)
	    {
	        long long int val=a[i]*a[i+1];
	        if(val<0)
	        dp[i]=dp[i+1]+1;
	        else
	        dp[i]=1;
	    }
	    for(int i=0;i<n;i++)
	    cout<<dp[i]<<" ";
	    cout<<endl;
	}
	return 0;
}