#include
#include
using namespace std;
int main() {
int t;
cin>>t;
while(t--){
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
cin>>a[i];
int cumulative[n+1];
cumulative[0]=0;
for(int i=0;i<n;i++){
cumulative[i+1]=cumulative[i]+a[i];
}
for(int i=0;i<n;i++){
cumulative[i+1]=cumulative[i+1]%n;
}
int ans=0;
for(int i=0;i<=n;i++)
cout<<endl;
sort(cumulative+1,cumulative+n+1);
for(int i=0;i<n+1;i++){
int count=upper_bound(cumulative,cumulative+n+1,cumulative[i])-lower_bound(cumulative,cumulative+n+1,cumulative[i]);
i=upper_bound(cumulative,cumulative+n+1,cumulative[i])-cumulative-1;
ans=ans+((count*(count-1))/2);
}
cout<<ans<<endl;
}
return 0;
}
Cab you go through the code and see why its showing TLE for some cases and whats the work around?