[CF] 950A Left-handers, Right-handers and Ambidexters

本文探讨了一个有趣的组合问题,在一个水保龄球训练中,如何根据左撇子、右撇子及全能选手的数量,配置出一个左右手人数相等且数量最大的团队。文章提供了具体的算法实现思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

A. Left-handers, Right-handers and Ambidexters
time limit per test1 second
memory limit per test256 megabytes
inputstandard input
outputstandard output
You are at a water bowling training. There are l people who play with their left hand, r people, who play with their right hand, and a ambidexters, who can play with left or right hand.

The coach decided to form a team of even number of players, exactly half of the players should play with their right hand, and exactly half of the players should play with their left hand. One player should use only on of his hands.

Ambidexters play as well with their right hand as with their left hand. In the team, an ambidexter can play with their left hand, or with their right hand.

Please find the maximum possible size of the team, where equal number of players use their left and right hands, respectively.

Input
The only line contains three integers l, r and a (0 ≤ l, r, a ≤ 100) — the number of left-handers, the number of right-handers and the number of ambidexters at the training.

Output
Print a single even integerthe maximum number of players in the team. It is possible that the team can only have zero number of players.

Examples
inputCopy
1 4 2
output
6
inputCopy
5 5 5
output
14
inputCopy
0 2 0
output
0
Note
In the first example you can form a team of 6 players. You should take the only left-hander and two ambidexters to play with left hand, and three right-handers to play with right hand. The only person left can't be taken into the team.

In the second example you can form a team of 14 people. You have to take all five left-handers, all five right-handers, two ambidexters to play with left hand and two ambidexters to play with right hand.

感觉就像在两个栈里加元素,贪心地想,每次加小的,最后小的元素个数*2就是相等的元素个数

//Stay foolish,stay hungry,stay young,stay simple
#include<iostream>
using namespace std;

int n,l,r,b;

int main(){
    cin>>l>>r>>b;
    while(b--){
        if(l<r) l++;
        else r++;
    }
    cout<<min(l,r)*2;
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值