Skip to content

Commit 941e9d8

Browse files
authored
Merge pull request zapellass123#464 from progbisht/patch-3
Max Circular Subarray Sum Problem in CPP
2 parents 512981b + 4d7ef57 commit 941e9d8

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed

MaxCircularSubarrySum.cpp

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
// max circular subarray sum problem
2+
3+
#include<bits/stdc++.h>
4+
5+
using namespace std;
6+
7+
class Solution{
8+
9+
public:
10+
int kadalgo(int arr[],int n){
11+
int currsum = 0;
12+
int maxsum = 0;
13+
for(int i=0;i<n;i++){
14+
currsum+=arr[i];
15+
if(currsum<0){
16+
currsum=0;
17+
}
18+
maxsum=max(maxsum,currsum);
19+
}
20+
return maxsum;
21+
}
22+
23+
int circularSubarraySum(int arr[], int num){
24+
int nonwrapsum = kadalgo(arr,num);
25+
if(!nonwrapsum){
26+
int maxsum=-10e6;
27+
for(int i=0;i<num;i++){
28+
maxsum = max(arr[i],maxsum);
29+
}
30+
31+
return maxsum;
32+
}
33+
34+
int totalsum = 0;
35+
36+
for(int i=0;i<num;i++){
37+
totalsum+=arr[i];
38+
arr[i] = -arr[i];
39+
}
40+
41+
int wrapsum = totalsum + kadalgo(arr,num);
42+
43+
return max(wrapsum,nonwrapsum);
44+
}
45+
};
46+
47+
int main(){
48+
49+
int T;
50+
cin>>T;
51+
52+
while(T--){
53+
54+
int num;
55+
cin>>num;
56+
57+
int arr[num];
58+
59+
for(int i=0;i<num;i++){
60+
cin>>arr[i];
61+
}
62+
63+
Solution ob;
64+
65+
cout<<ob.circularSubarraySum(arr,num)<<endl;
66+
67+
}
68+
69+
return 0;
70+
71+
}

0 commit comments

Comments
 (0)