思路
一共有三种情况。
1.总时间分别小于两台机器的启动时间。
2.总时间小于两台机器的启动时间的和。
3.总时间大于两个启动时间的和。
后面就很好办了,对每种情况进行模拟。
对于情况一:直接输出 0 0 0。
对于情况二:选择两种机器的其中一个。
对于情况三:两种机器都选择。
其中,情况二和三又有两种不同顺序的选择。将两种不同顺序的选择结果依次比大小,就可以求出最终答案了。
AC 代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long k,a,b,x,y,ans;
cin>>k>>a>>x>>b>>y;
if(k<=a&&k<=b)//情况一
{
ans=0;//开机后时间不足,ans=0
}
else if(k<=a+b)//情况二
{
ans=max((k-b)*y,(k-a)*x);//对两种情况分别进行比大小
}
else//情况三
{
ans=max((k-a)*x+(k-a-b)*y,(k-a-b)*x+(k-b)*y);//对两种情况分别进行比大小
}
cout<<ans;//输出答案
return 0;
}