牛客NC21740移动石头(C++)

题目链接
牛客NC21740移动石头(C++)_第1张图片
牛客NC21740移动石头(C++)_第2张图片
实现方法

  1. 读取数据时分别计算两个数组的总和,若不相等输出-1;
  2. 计算每两堆石头之间的差值,该差值就是需要移动的数量;
  3. 将差值的绝对值计入总和,并将差值与下一个差值相加;

代码

#include 
using namespace std;

int a[55],b[55],c[55];

signed main() {
    int n;
    cin>>n;
    int suma=0,sumb=0;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        suma+=a[i];
    }
    for(int i=1;i<=n;i++){
        cin>>b[i];
        sumb+=b[i];
        c[i]=b[i]-a[i];
    }
    if(suma!=sumb)return cout<<-1,0;
    int res=0;
    for(int i=1;i<=n-1;i++){
        c[i+1]+=c[i];
        res+=abs(c[i]);
    }
    cout<<res;
    return 0;
}

你可能感兴趣的:(算法,c++,算法,开发语言)