两人三组(AC)

题目描述

学校在举办两人三足接力的比赛,以班级为单位进行比赛,由于是接力比赛,只有当前一组跑完的时候,才会轮到下一组,且每组队伍必须由一位男生和一位女生组成。
请注意,这是一个双人的游戏,考察的是团队配合能力,需要两人的速度保持一致的时候才能跑起来,要不然,速度不匹配非常容易磕到,影响比赛的速度。
为了取得比赛的胜利,小唐的班级派出 n 名男生和女生参加比赛,由于每位选手的速度可能不一样,需要小唐来帮助老师组建出一个队伍出来。
请帮助小唐进行分组,并求出班级最强队伍的总速度以及最弱队伍的总速度,班级队伍的总速度为所有组队速度之和。

输入

输入三行;
第一行,输入 n,表示共 n 名男生和女生。
第二行,输入 n 个数据, 表示男生的速度 a i 。
第三行,输入 n 个数据,表示女生的速度 b i 。

输出

输出两行;
第一行,输出班级最强的队伍的总速度。
第二行,输出班级最弱的队伍的总速度。

样例输入 Copy
3
5 1 4
6 3 3
样例输出 Copy
9
7
提示

【数据范围】
对于 30% 的数据 1 < n ≤ 103 , 1 ≤ ai ,bi ≤ 106 ;
对于 50% 的数据 1 < n ≤ 103 , 1 ≤ ai ,bi ≤ 109 ;
对于 100% 的数据 1 < n ≤ 106 , 1 ≤ ai ,bi ≤ 109 ;


最强就是各自排序后组队(贪心?

最弱就是所有人里面跑的最慢的人加在一起

记得数据范围不要错

代码

#include <iostream>
#include <algorithm>

using namespace std;
typedef long long ll;

ll n, boy[1000009], girl[1000009], a = 0, b = 0;

int main() {
    cin >> n;
    for (int i = 0; i < n; ++i) cin >> boy[i];
    for (int i = 0; i < n; ++i) cin >> girl[i];
    sort(boy, boy + n);
    sort(girl, girl + n);
    for (int i = 0; i < n; ++i) a += min(boy[i], girl[i]);
    ll i = 0, j = 0, t = 0;
    while (t < n) {
        if (boy[i] < girl[j]) b += boy[i++];
        else b += girl[j++];
        t++;
    }
    cout << a << "\n" << b << '\n';
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值