zoukankan      html  css  js  c++  java
  • [C++]Yellow Cards

    1 Problem Description

    • Problem
      The final match of the Berland Football Cup has been held recently. The referee has shown n yellow cards throughout the match. At the beginning of the match there were a1 players in the first team and a2 players in the second team. The rules of sending players off the game are a bit different in Berland football. If a player from the first team receives k1 yellow cards throughout the match, he can no longer participate in the match — he’s sent off. And if a player from the second team receives k2 yellow cards, he’s sent off. After a player leaves the match, he can no longer receive any yellow cards. Each of n yellow cards was shown to exactly one player. Even if all players from one team (or even from both teams) leave the match, the game still continues. The referee has lost his records on who has received each yellow card. Help him to determine the minimum and the maximum number of players that could have been thrown out of the game.

    • Input
      The first line contains one integer a1 (1 ≤ a1 ≤ 1 000) — the number of players in the first team.The second line contains one integer a2 (1 ≤ a2 ≤ 1 000) — the number of players in the second team.The third line contains one integer k1 (1 ≤ k1 ≤ 1 000) — the maximum number of yellow cards a player from the first team can receive (after receiving that many yellow cards, he leaves the game).The fourth line contains one integer k2 (1 ≤ k2 ≤ 1 000) — the maximum number of yellow cards a player from the second team can receive (after receiving that many yellow cards, he leaves the game).The fifth line contains one integer n (1 ≤ n ≤ a1 · k1 + a2 · k2) — the number of yellow cards that have been shown during the match.

    • Output
      Print two integers — the minimum and the maximum number of players that could have been thrown out of the game.

    • Examples

    • Note
      In the first example it could be possible that no player left the game, so the first number in the output is 0. The maximum possible number of players that could have been forced to leave the game is 4 — one player from the first team, and three players from the second.
      In the second example the maximum possible number of yellow cards has been shown (3 · 6 + 1 · 7 = 25),so in any case all players were sent of

    2 Problem Analysis

    3 Code

    /*
     Yellow Cards - GYM - 102348 - Problem:A - 2019-09-29
     [Problem Description] https://codeforces.com/gym/102348/problem/A
     [Contest Material] https://codeforces.com/gym/102348/attachments/download/9362/statements.pdf
     [Contest Information]
     	[Name]   Southern and Volga Russia Qualifier 2019-2020 (GYM)
     	[Start]  Sep/17/2019 00:00UTC+8
     	[Length] 04:00 (Hour) 
    	[Other]  Final standings / Prepared by BledDest Official ICPC Contest Northeastern Europe Region Russia, Saratov, 2019-2020 Statements: in English, in Russian
     */
    #include<stdio.h>
    #include<iostream>
    using namespace std;
    
    int min(int a1, int a2, int k1, int k2, int n){
        int total = a1*(k1-1) + a2*(k2-1);
        if(n <= total){
            return 0;
        } else {
            return (n - total);
        }
    }
    
    int max(int a1, int a2, int k1, int k2, int n){
        int minTeamOfYellowCardsNum[2];
        minTeamOfYellowCardsNum[0] = k1<k2?a1:a2;
        minTeamOfYellowCardsNum[1] = k1<k2?k1:k2;
        int temp1 = minTeamOfYellowCardsNum[0]*minTeamOfYellowCardsNum[1]; 
        int temp2 = a1*k1 + a2*k2; 
        //printf("Amin*Kmin: %d
    ", temp1);
        //printf("A1*K1+A2*K2: %d
    ", temp2);
        if(n <= temp1){
            return n/minTeamOfYellowCardsNum[1];// n < temp1
        } else {
            //printf("n/minTeamOfYellowCardsNum[1]: %d
    ", n/minTeamOfYellowCardsNum[1]);
            //printf("n: %d | Amin*Kmin(temp2): %d
    ",n, temp2);
            int maxTeamOfYellowCardsNum[2];
            maxTeamOfYellowCardsNum[0] = k1>k2?a1:a2;
            maxTeamOfYellowCardsNum[1] = k1>k2?k1:k2;
            return minTeamOfYellowCardsNum[0] + ( ( n - temp1 )/maxTeamOfYellowCardsNum[1]);
        }
    }
    
    int main(){
        int a1,a2;
        int k1,k2;
        int n;
        scanf("%d
    %d
    %d
    %d
    %d", &a1, &a2, &k1, &k2, &n);
        //printf("%d
    %d
    %d
    %d
    %d
    ", a1, a2, k1, k2, n);//test output
        printf("%d
    ", min(a1, a2, k1, k2, n));
        printf("%d", max(a1, a2, k1, k2, n));
        return 0;
    }
    

    Congratulations~

    4 Problem Related Information

    5 Recommend Documents

  • 相关阅读:
    解决windows 下Java编译和运行版本不一致的错误has been compiled by a more recent version
    解决两个OpenCV 报错 (raise.c and GTK) ,重新安装和编译
    Java|如何使用“Java”爬取电话号码(转载)
    Java手机号码工具类(判断运营商、获取归属地)以及简要的原理跟踪(转载)
    Caused by: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
    mysql分库分表
    python将html文件转换为pdf
    mysql获取字段名和对应的注释
    mysql大表查询慢对应方案
    harbor安装
  • 原文地址:https://www.cnblogs.com/johnnyzen/p/11608515.html
Copyright © 2011-2022 走看看