K Concatenation

Can any one help me in finding out the mistake in my code. It is running for partial test cases.
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

ll kadane(int a[],int n){
ll current = 0;
ll best = INT_MIN;
for(int i=0;i<n;i++){
current = current + a[i];
if(best < current){
best = current;
}
if(current < 0){
current = 0;
}
}
return best;
}

ll kconcat(int a[],int n,int k){
ll maxsumSubarray = kadane(a,n);
if(k==1){
return maxsumSubarray;
}
ll cprefixSum = 0,csuffixSum = 0;
ll bprefixSum = INT_MIN,bsuffixSum = INT_MIN;
for(int i=0;i<n;i++){
cprefixSum = cprefixSum + a[i];
bprefixSum = max(bprefixSum,cprefixSum);
}
ll sum = cprefixSum;
for(int i=n-1;i>=0;i–){
csuffixSum = csuffixSum + a[i];
bsuffixSum = max(bsuffixSum,csuffixSum);
}
ll ans;
if(sum < 0){
ans = max(bprefixSum + bsuffixSum,maxsumSubarray);

}else{
    ans = max(bprefixSum + (maxsumSubarray*(k-2)) + bsuffixSum,maxsumSubarray);
}
return ans;

}

int main() {
int t;
cin>>t;
while(t–){
int n,k;
cin>>n>>k;
int a[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
cout<<kconcat(a,n,k)<<endl;
}
return 0;
}

They solved it.

Please format your code next time :slight_smile: