问题 B: 2.左右(lr.cpp/pas)

目录

题目描述

输入

输出

[样例输入 复制](#样例输入 复制)

[样例输出 复制](#样例输出 复制)

提示


题目描述

小明近来开发了一个数字游戏。它随机写了一组数字a1、a2......ai,然后将一个数字m交给一位同学,让他们将数字m插入到a1、a2......ai之间(不能在a1前或在an之后)。m将该组数字分成了"左营"和"右营","左营"所有的数字之和构成"左营能量","右营"的所有的数字之和构成"右营能量",而m则永远归属"左营能量"。如果那位同学们插入的位置恰巧让"左营能量"和"右营能量"的差最小,那么参与游戏的同学将会得到游戏的奖励。

输入

第一行有一个数字n

第二行有n个数字ai,每个整数之间有一个空格。

第三行有个数字m,是游戏参与者要求恰当插入至a1、a2......ai之间位置的一个数。

输出

一个数字,表明"左营能量"和"右营能量"的最小差。

样例输入 复制
复制代码
4                       
1 5 3 4
2
样例输出 复制
复制代码
1
提示

70%数据1<=n<=10000,1<=ai<=10000,m<=10000;

100%数据,1<=n<=100000,0<=ai<=1000000,0<=m<=10000000。

#include <bits/stdc++.h>

#define ll long long

using namespace std;

ll n,mi,i,a1000100,f1000100,a1,a2,m;

main(){

cin>>n;mi=2e9;

for(i=1;i<=n;i++)cin>>ai,fi=fi-1+ai;

cin>>m;

for(i=1;i<=n;i++){

a1=fi+m;a2=fn-fi;

mi=min(mi,abs(a1-a2));

}

cout<<mi;

}

cpp 复制代码
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll n,mi,i,a[1000100],f[1000100],a1,a2,m;
main(){
    cin>>n;mi=2e9;
    for(i=1;i<=n;i++)cin>>a[i],f[i]=f[i-1]+a[i];
    cin>>m;
    for(i=1;i<=n;i++){
        a1=f[i]+m;a2=f[n]-f[i];
        mi=min(mi,abs(a1-a2));
    }
    cout<<mi;
}
相关推荐
GreenTea1 小时前
vLLM 与 SGLang KV Cache 底层实现机制深度调研报告
前端·后端·算法
Bode_20021 小时前
多资源规划(含生产调度、库存管理及产能规划)的创新优化算法
算法·调度
土司大王2 小时前
LeetCode hot100——35.搜索插入位置:Java 二分模板、左闭右开区间与插入点分析
java·算法·leetcode
微三云生态系统架构师-彭丹2 小时前
远方好物S2B2C系统架构:一级分销与保证金托管的合规技术实现
人工智能·算法
土司大王2 小时前
LeetCode hot100——34.在排序数组中查找元素的第一个和最后一个位置:Java 二分模板、边界分析
java·算法·leetcode
罗西的思考3 小时前
机器人模型(WM / WAM / VLA)综合分析与对比:从「看」到「想」再到「做」
人工智能·算法·机器学习
无小道5 小时前
C++——列表初始化
c++·列表初始化
小哈里5 小时前
【知识】从学科到实践:自然・工程・社科・人文|算法・研发・产品・品牌设计
程序人生·算法·产品·设计·工程
blueSatchel5 小时前
c++action 编写(ros-humble)
c++·ros2
小π军5 小时前
最大重叠区间数量
数据结构·算法