题解 | #糕点#
糕点
http://www.nowcoder.com/questionTerminal/10661f4d02564ba686bcba4645e0a029
C++ 模拟
另 mi = min(a,b)
, ma = max(a,b)
使用flag
记录是否存在已经做好的蛋糕大于最大值或小于最小值。
使用 flag_min
记录缺少的 最小值的数量, 初始值为1
使用 flag_max
记录缺少的最大值的数量, 初始值为1
最后判断 flag
是否为true
并且剩余的蛋糕数量(n-m
)是否满足所需的数量(flag_min + flag_max
)。
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m, a, b;
while (cin >> n >> m >> a >> b) {
int mi = min(a, b), ma = max(a, b);
int remain = n - m, need_min = 1, need_max = 1, flag = 1, x;
while (m--) {
scanf("%d", &x);
if (x == mi) need_min = 0;
else if (x == ma) need_max = 0;
else if (x < mi || x > ma) flag = 0;
}
if (flag && remain >= need_min + need_max) puts("YES");
else puts("NO");
}
return 0;
}