我们当中有很多热爱中国足球的同学,我们都知道中超(中国足球超级联赛)的规则:
一场比赛中,若获胜则获得3的积分,若打平则获得1分,若失败获得0积分。
这个问题很简单,假设N轮比赛中你一共攻入S个球,丢掉T个球,那么你可能获得的最大得分和最小得分是多少

刷数论题的时候刷到这个了……

这真的能叫数论题吗?不就是个裸的贪心

考虑把最大得分和最小得分分开讨论:

最大得分

  1. 进球数还没有总场次多
  1. 进球数多于胜场

最小得分

  1. 如果进球数已经多余了丢球数

代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;

ll s,t,n;

int main()
{
    while(scanf("%lld%lld%lld",&s,&t,&n)!=EOF)
    {
        ll ans1=0,ans2=0;

        if(s<n)
        {
            ans1=3*s+n-s-1;
            if(!t) ans1++;
        }
        else
        {
            ans1=3*max(n-1,min(n,s-t));
            if(n-s+t==1) ans1++;
        }

        if(s>t) ans2=3+max(0LL,n-t-1);
        else ans2=min(3+max(0LL,n-t-1),max(n-t+s,0LL));

        printf("%lld %lld\n",ans1,ans2);
    }
    return 0;
}
02-11 02:27