思路

移动石头

https://ac.nowcoder.com/acm/problem/21740

思路如果a[i]>b[i],就把多余的石头放到后面一堆,反之就从后面一堆拿,如果不能够完成的话n+1项肯定会被使用,即不为0,输出-1即可
#include"bits/stdc++.h"
using namespace std;
int n;
int a[55],b[55];
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
    }
    for(int i=1;i<=n;i++){
        scanf("%d",&b[i]);
    }
    int ans=0;
    for(int i=1;i<=n;i++){
        if(a[i]>b[i]){
            a[i+1]+=a[i]-b[i];
            ans+=a[i]-b[i];
        }
        if(a[i]<b[i]){
            a[i+1]-=b[i]-a[i];
            ans+=b[i]-a[i];
        }
    }
    if(a[n+1]!=0||b[n+1]!=0)
    cout<<"-1";
    else
    cout<<ans;
    return 0;
} 
全部评论

相关推荐

内向的柠檬精在研究求...:这不才9月吗,26到明年毕业前能一直找啊,能拿下提前批,转正的,offer打牌的都是有两把刷子的,为什么非要跟他们比。如果别人是9本硕+金牌+好几段大厂实习呢?如果别人是双非通天代呢?如果别人是速通哥呢?,做好自己就行了,我们做不到他们一样提前杀死比赛,但晚点到终点也没啥关系吧
双非应该如何逆袭?
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务