#include <bits/stdc++.h>
using namespace std;
int m, s, t;
int ans1 = 1e9, ans2 = -1e9;
inline void dfs(int magic, int sum, int tim) {
if (sum <= 0) {
ans1 = min(ans1, t - tim);
return;
}
if (tim <= 0) {
ans2 = max(ans2, s - sum);
return;
}
// 1.使用法术
if (magic >= 10) {
dfs(magic - 10, sum - 60, tim - 1);
} else {
// 2.跑步
dfs(magic, sum - 17, tim - 1);
}
// 3.休息
int tmp = magic , cnt = 0;
while(tmp < 10){
tmp += 4;
// cout<<tmp;
}
dfs(magic + 4, sum, tim - 1);
return;
}
int main() {
cin >> m >> s >> t;
dfs(m, s, t);
if (ans1 == (int)1e9) {
cout << "No" << endl;
cout << ans2;
} else {
cout << "Yes" << endl;
cout << ans1;
}
return 0;
}
最后4个点WA了,求助!