- #include<iostream>
- using namespace std;
- int main(void)
- {
- double s,d;
- while(cin>>s>>d)
- {
- bool flag=false;
- int surplus=0;
- if(s>=4*d)
- flag=true;
- else if((s>=1.5*d)&&(s<4*d))
- {
- surplus=3*s-9*d;
- if(surplus<0)
- flag=true;
- }
- else if((s>=0.666666*d)&&(s<1.5*d))
- {
- surplus=6*(s-d);
- if(surplus<0)
- flag=true;
- }
- else if((s>=0.25*d)&&(s<0.666666*d))
- {
- surplus=8*s-4*d;
- if(surplus<0)
- flag=true;
- }
- else if((s>=0)&&(s<0.25*d))
- {
- surplus=10*s-2*d;
- if(surplus<0)
- flag=true;
- }
- if(flag)
- cout<<"Deficit"<<endl;
- else
- cout<<surplus<<endl;
- }
- return 0;
- }
实际上;只要讨论5种情况即可;(任一月固定盈余s,或固定亏损d).
SSSSDSSSSDSS 4s<d 保证“连续5个月必亏损”,每连续5个月种至少1个月D,
保证可能有全年最大盈余,每连续5个月中至多4个月S
SSSDDSSSDDSS 3s<2d 保证“连续5个月必亏损”,每连续5个月种至少2个月D,
保证可能有全年最大盈余,每连续5个月中至多3个月S
SSDDDSSDDDSS 2s<3d 保证“连续5个月必亏损”,每连续5个月种至少3个月D,
保证可能有全年最大盈余,每连续5个月中至多2个月S
SDDDDSDDDDSD s<4d 保证“连续5个月必亏损”,每连续5个月种至少4个月D,
保证可能有全年最大盈余,每连续5个月中至多1个月S
DDDDDDDDDDDD s>=4d 保证“连续5个月必亏损”,每连续5个月种至少5个月D,
每月亏损,此情况全年必亏损