Hey,
I am kind of clueless why my program does not pass the hidden tests.
https://www.codechef.com/viewsolution/37877521
Any help is appreciated!
Hey,
I am kind of clueless why my program does not pass the hidden tests.
https://www.codechef.com/viewsolution/37877521
Any help is appreciated!
#include
#include<bits/stdc++.h>
using namespace std;
typedef long long l;
l radane(int arr[],int n,int k)
{
l current_max=0,max_sum=INT_MIN;
for(int i=0;i<n;i++)
{
current_max+=arr[i];
if(current_max>max_sum)
{
max_sum=current_max;
}
if(current_max<0)
{
current_max=0;
}
}
return max_sum;
}
l maximumarraysum(int arr[],int n,int k)
{
l subarray_sum=radane(arr,n,k);
if(k==1)
{
return subarray_sum;
}
l current_prefix_sum=0;
l current_suffix_sum=0;
l max_prefix_sum=INT_MIN;
l max_suffix_sum=INT_MIN;
for(int i=0;i<n;i++)
{
current_prefix_sum+=arr[i];
if(current_prefix_sum>max_prefix_sum)
{
max_prefix_sum=current_prefix_sum;
}
}
// cout << "hello\n";
l total_sum=current_prefix_sum;
for(int j=n-1;j>=0;j--)
{
current_suffix_sum+=arr[j];
if(current_suffix_sum>max_suffix_sum)
{
max_suffix_sum=current_suffix_sum;
}
}
l ans;
if(total_sum<0)
{
ans=max(max_suffix_sum+max_prefix_sum,subarray_sum);
}else{
ans =max(max_suffix_sum+max_prefix_sum+((k-2)*total_sum),subarray_sum);
}
return ans;
}
int main() {
int t;
cin>>t;
while(t–)
{
int n,k;
cin>>n>>k;
int arr[n];
for(int i=0;i<n;i++)
{
cin>>arr[i];
}
cout<<maximumarraysum(arr, n, k)<<endl;
}
return 0;
}