虽然不难,但是本渣还是要看一下题解才做出来
#include<iostream> #include<cstring> using namespace std; int dis[300010]; int main(int argc, char const *argv[]) { int m, s, t; bool f = 0; while(cin >> m >> s >> t) { if(f) cout << endl; memset(dis, 0, sizeof(dis)); int r = 0; for (int i = 1; i <= t; ++i) { if(m > 9) { dis[i] = dis[r] + 60; r = i; m -= 10; } else m += 4; } for (int i = 1; i <= t; ++i) dis[i] = max(dis[i], dis[i-1]+17); if(dis[t] < s) cout << "No" << endl << dis[t] << endl; else { int i = 0; while(dis[i] < s) i++; cout << "Yes" << endl << i << endl; } f = 1; } return 0; }