题解 | #获得最多的奖金#
获得最多的奖金
https://www.nowcoder.com/practice/247f7bd088764aefa7474cff27489095
#include "bits/stdc++.h"
using namespace std;
int main(){
int n;
cin>>n;
vector<long long> map(n);
for(int i=0;i<n;++i){
cin>>map[i];
}
int left = 0; //左指针
int right = n - 1; // 右指针
long long left_rewards = map[left]; //左边累积奖励
long long right_rewards = map[right]; //右边累积奖励
long long res = 0; //记录最终答案
while(left < right){
if(left_rewards < right_rewards){
left_rewards += map[++left];
}else if(left_rewards > right_rewards){
right_rewards += map[--right];
}else{
res = max(res, left_rewards);
left_rewards += map[++left];
}
}
cout<<res<<endl;
return 0;
}
using namespace std;
int main(){
int n;
cin>>n;
vector<long long> map(n);
for(int i=0;i<n;++i){
cin>>map[i];
}
int left = 0; //左指针
int right = n - 1; // 右指针
long long left_rewards = map[left]; //左边累积奖励
long long right_rewards = map[right]; //右边累积奖励
long long res = 0; //记录最终答案
while(left < right){
if(left_rewards < right_rewards){
left_rewards += map[++left];
}else if(left_rewards > right_rewards){
right_rewards += map[--right];
}else{
res = max(res, left_rewards);
left_rewards += map[++left];
}
}
cout<<res<<endl;
return 0;
}