File tree Expand file tree Collapse file tree 1 file changed +31
-30
lines changed Expand file tree Collapse file tree 1 file changed +31
-30
lines changed Original file line number Diff line number Diff line change @@ -3,45 +3,46 @@ using namespace std;
3
3
4
4
int maxSumDivThree (vector<int >& nums) {
5
5
6
- vector<int > d1 ;
7
- vector<int > d2 ;
6
+ vector<int > dp1 ;
7
+ vector<int > dp2 ;
8
8
9
- int su = 0 ;
10
- for (auto num: nums){
11
- su+=num ;
12
- if (num %3 ==1 ){
13
- d1 .push_back (num );
9
+ int sum = 0 ;
10
+ for (int i= 0 ;i< nums. size ();i++ ){
11
+ sum += nums[i] ;
12
+ if (nums[i] %3 ==1 ){
13
+ dp1 .push_back (nums[i] );
14
14
}
15
- if (num %3 ==2 ){
16
- d2 .push_back (num );
15
+ else if (nums[i] %3 ==2 ){
16
+ dp2 .push_back (nums[i] );
17
17
}
18
18
}
19
+ sort (dp1.begin (),dp1.end ());
20
+ sort (dp2.begin (),dp2.end ());
21
+ if (sum%3 ==0 ){
22
+ return sum;
23
+ }
19
24
20
- sort (d1.begin (),d1.end ());
21
- sort (d2.begin (),d2.end ());
22
-
23
- if (su%3 ==0 )
24
- return su;
25
-
26
- if (su%3 ==1 ){
27
- int r1=0 ,r2=0 ;
28
- if (d1.size ()>0 ){
29
- r1 = su-d1[0 ];
25
+ if (sum%3 ==1 ){
26
+ int t1=0 ,t2=0 ;
27
+ if (dp1.size ()>0 ){
28
+ t1 = sum-dp1[0 ];
30
29
}
31
- if (d2 .size ()>1 ){
32
- r2 = su-d2 [0 ]-d2 [1 ];
30
+ if (dp2 .size ()>1 ){
31
+ t2 = sum-dp2 [0 ]-dp2 [1 ];
33
32
}
34
- return max (r1,r2 );
33
+ return max (t1,t2 );
35
34
}
36
- if (su%3 ==2 ){
37
- int r1=0 ,r2=0 ;
38
- if (d2.size ()>0 ){
39
- r2 = su-d2[0 ];
35
+
36
+ if (sum%3 ==2 ){
37
+ int t1=0 ,t2=0 ;
38
+ if (dp2.size ()>0 ){
39
+ t1 = sum-dp2[0 ];
40
40
}
41
- if (d1 .size ()>1 ){
42
- r1 = su-d1 [0 ]-d1 [1 ];
41
+ if (dp1 .size ()>1 ){
42
+ t2 = sum-dp1 [0 ]-dp1 [1 ];
43
43
}
44
- return max (r1,r2 );
44
+ return max (t1,t2 );
45
45
}
46
- return su;
46
+
47
+ return sum;
47
48
}
You can’t perform that action at this time.
0 commit comments