Skip to content

Commit 94e0c35

Browse files
committed
1262
1 parent 3631643 commit 94e0c35

File tree

1 file changed

+31
-30
lines changed

1 file changed

+31
-30
lines changed

t1262. Greatest Sum Divisible by Three.cpp

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -3,45 +3,46 @@ using namespace std;
33

44
int maxSumDivThree(vector<int>& nums) {
55

6-
vector<int> d1;
7-
vector<int> d2;
6+
vector<int> dp1;
7+
vector<int> dp2;
88

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]);
1414
}
15-
if(num%3==2){
16-
d2.push_back(num);
15+
else if(nums[i]%3==2){
16+
dp2.push_back(nums[i]);
1717
}
1818
}
19+
sort(dp1.begin(),dp1.end());
20+
sort(dp2.begin(),dp2.end());
21+
if(sum%3==0){
22+
return sum;
23+
}
1924

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];
3029
}
31-
if(d2.size()>1){
32-
r2 = su-d2[0]-d2[1];
30+
if(dp2.size()>1){
31+
t2 = sum-dp2[0]-dp2[1];
3332
}
34-
return max(r1,r2);
33+
return max(t1,t2);
3534
}
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];
4040
}
41-
if(d1.size()>1){
42-
r1 = su-d1[0]-d1[1];
41+
if(dp1.size()>1){
42+
t2 = sum-dp1[0]-dp1[1];
4343
}
44-
return max(r1,r2);
44+
return max(t1,t2);
4545
}
46-
return su;
46+
47+
return sum;
4748
}

0 commit comments

Comments
 (0)