[NOIP2007 普及组] 守望者的逃离 - 洛谷https://www.luogu.com.cn/problem/P1095
#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <cstring>
#include <set>
#include <cmath>
#include <map>
#include <cstdlib>
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
const int MN = 65005;
const int MAXN = 2000010;
const int INF = 0x3f3f3f3f;
#define IOS ios::sync_with_stdio(false)
int M, S, T;
int dp[MAXN];
int main() {
scanf("%d %d %d", &M, &S, &T);
for (int i = 1; i <= T; i++) {
if (M >= 10) {
dp[i] += dp[i - 1] + 60;
M -= 10;
} else {
dp[i] = dp[i - 1];
M += 4;
}
}
for (int i = 1; i <= T; i++) {
if (dp[i - 1] + 17 > dp[i]) {
dp[i] = dp[i - 1] + 17;
}
if (dp[i] >= S) {
printf("Yes\n%d", i);
return 0;
}
}
printf("No\n%d", dp[T]);
return 0;
}
#if 0
int M, S, T;
int dp[100005][1005];
int main() {
scanf("%d %d %d", &M, &S, &T);
int s1 = 0;
int s2 = 0;
for (int i = 1; i <= T; i++) {
s1 += 17;
if (M >= 10) {
s2 += 60;
M -= 10;
} else {
M += 4;
}
if (s1 < s2) {
s1 = s2;
}
if (s1 >= S) {
printf("Yes\n%d", i);
return 0;
}
}
printf("No\n%d", s1);
return 0;
}
#endif