每一个重点步骤都有注释,就不再解释了。才不是懒
#include <bits/stdc++.h>
#define fi first
#define se second
#define endl '\n'
using namespace std;
using LL = long long;
LL m,s,t;
LL s1,s2;//s1跑步,s2闪烁;两者同时进行是为了方便比较哪个更快
void solve()
{
cin >> m >> s >> t;
for (int i = 1;i <= t;i ++)
{
s1 += 17;
if (m >= 10) s2 += 60,m -= 10;
else m += 4;
//当s2>s1时,说明我们可以假设到i这个时刻,我们时闪烁过来的,反之则可假设是跑步过来的,这样可以规划最优的选择
if (s2 > s1) s1 = s2; //s2替换s1是因为有可能存在,在s2休息时s1已经成功逃出
if (s1 > s)
{
cout << "Yes" << endl;
cout << i << endl;
return;
}
}
cout << "No" << endl;
cout << s1 << endl; //由于闪烁可走距离一旦大于跑步的跑步的距离就会被替换,这时跑的距离远的一定是s1,并且当闪烁在休息时,s1还在跑
}
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int _ = 1;
// cin >> _;
while(_--) solve();
return 0;
}