2018暑期SICNU-ACM组集训报告(6)

题目:
Megabrain has usual problems with the occupiers: he is captured again and is forced to solve logical puzzles about urns with balls. In the urn staying in front of Megabrain there are a red balls, b green balls and also c balls, colors of which are unknown to Megabrain. The occupiers demand an answer to a question: what is the maximal number of balls one can take out of this urn, so that there would be no more than n red and no more than m green balls among them for sure?

Input
The first line contains three integers a, b and c separated by a space (0 ≤ a, b, c ≤ 109) — the number of red balls in the urn, the number of green balls in the urn, and the number of balls of unknown color in the urn, correspondingly.

The second line contains two integers n and m separated by a space (0 ≤ n, m ≤ 109) — the maximal number of red balls allowed to be taken out of the urn and the maximal number of green balls allowed to be taken out of the urn, correspondingly.

Output
Output a single integer — the maximal number of balls that can be taken out of the urn so that no restrictions are violated.

Examples
Input
3 2 9
2 7
Output
2
Input
1 2 4
8 4
Output
4
原题链接:http://codeforces.com/gym/101341/problem/C

题意:输入三个数字分别代表红球数量,蓝球数量,红蓝随机球数量;
再输入两个数字代表最多取的红球蓝球数量;
求在不超出后两个数字的球数的情况下取球的最大值。

思路:不是很难但是要把所有情况都考虑到确实繁琐
第一次是比较的 前三个和和 n,m的大小,殊不知m就算比a+b+c小,但是如果比b+c大的话,还是b+c,(我们已经知道的球,肯定是能拿到的)

AC代码:

#include 
#include
#define max(a,b)    (((a) > (b)) ? (a) : (b))
#define min(a,b)    (((a) < (b)) ? (a) : (b))
using namespace std;
int main()
{   long long a,b,c;
    long long  a1,a2;
    int ans1=0;
    cin>>a>>b>>c>>a1>>a2;
    ans1=a+b+c;
    if(a+c>a1)
         ans1=a1;
    if(c+b>a2)
         ans1=min(ans1,a2);
    cout<

你可能感兴趣的:(2018暑期SICNU-ACM组集训报告(6))