赞
踩
下为代码。
- #include<bits/stdc++.h>
- using namespace std;
- const int N = 1e5 + 10;
- int nums[N];
-
- void solve(){
- int n;
- cin >> n;
- for(int i = 1; i <= n; i++) cin >> nums[i];
- //输入数组
- int l = 1,r = n,lsum = 0,rsum = 0,res = 0,be = 0;
- //l为左坐标,r为右坐标,lsum为左边和,rsum为右边和
- //res为移动次数
- while(l <= r){
- res++;
- int tmp = 0;
- while(l <= r && tmp <= be){
- //当左边和大于右边和跳出
- tmp += nums[l];
- lsum += nums[l];
- l++;
- }
- be = tmp;
- //be此时为左边和
- if(l > r) break;
- res++;
- tmp = 0;
- while(l <= r && tmp <= be){
- //当右边和大于左边和时跳出
- tmp += nums[r];
- rsum += nums[r];
- r--;
- }
- be = tmp;
- //be此时为右边和
- }
- cout << res << ' ' << lsum << ' ' << rsum << '\n';
- }
-
- int main(){
- ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
- int q;
- cin >> q;
- while(q--)
- solve();
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。