分苹果

题目描述

n 只奶牛坐在一排,每个奶牛拥有 ai 个苹果,现在你要在它们之间转移苹果,使得最后所有奶牛拥有的苹果数都相同,每一次,你只能从一只奶牛身上拿走恰好两个苹果到另一个奶牛上,问最少需要移动多少次可以平分苹果,如果方案不存在输出 -1。

输入描述:

每个输入包含一个测试用例。每个测试用例的第一行包含一个整数 n(1 <= n <= 100),接下来的一行包含 n 个整数 ai(1 <= ai <= 100)。

输出描述:

输出一行表示最少需要移动多少次可以平分苹果,如果方案不存在则输出 -1。

示例1

输入

4
7 15 9 5

输出

3

思路:
1.满足总苹果树能被总奶牛数整除,即有平均值。
2.保证多出来或者少的那部分能被2整除。

题解:

#include<cstdio>
#include<cstdlib>
#include<vector>
using namespace std;
int n,sum = 0;
vector<int> cow;
int main() {
    scanf("%d", &n);
    cow.resize(n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &cow[i]);
        sum += cow[i];
    }
    if (sum % n != 0) {
        printf("-1");
        return 0;
    }
    int avg = sum / n;
    int cnt = 0;
    for (int i = 0; i < n; i++) {
        if ((abs(cow[i] - avg)) % 2 != 0) {
            printf("-1");
            return 0;
        }
        else {
            cnt += (abs(cow[i] - avg)) / 2;
        }
    }
    printf("%d", cnt / 2);
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 题目描述 n 只奶牛坐在一排,每个奶牛拥有 ai 个苹果,现在你要在它们之间转移苹果,使得最后所有奶牛拥有的苹果数...
    rayel阅读 417评论 0 0
  • 问题:老师给学生分苹果,学生个数不定,年龄各不相同,要求老师根据学生年龄分苹果,相邻两个同学,年龄大的同学比年龄小...
    qiwx阅读 576评论 0 0
  • [幸福路人 宋艳俊 平顶山郏县 坚持分享第166天 2018.1、25] 今天看到这样一个故事,感受颇深,...
    简单男孩阅读 189评论 0 1
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 4,099评论 0 2
  • 《在玛尔特菲娜女伯爵的森林里》 这幅油画在艺术表现上独具匠心,令人赞叹不已,大片森林,虽然布满整个画面,但是由于安...
    祎天阅读 2,976评论 0 0

友情链接更多精彩内容