Description
Input
Output
Sample Input
2 5 11 3 15 13 10 9 8 5 11 3 8 9 10 13 16
Sample Output
Case #1: why am I so diao? Case #2: madan!
HINT
第一组样例解释 5个ACMer,初始战斗力选择范围是[0,11],接下来每场战斗力提升上限是3,2,1,0,0,...,0 百小度首先使得自己的初始战斗力为10,打败战斗力为10的第一个ACMer, 然后选择战斗力提升3,变成13,打败战斗力为13的第二个ACMer, 然后选择战斗力提升2,变成15,打败战斗力为15的第三个ACMer, 之后再以任意顺序打败剩下的ACMer
#include <cmath>
#include <cstdio>
#include <string>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long LL;
typedef pair<int, int> PII;
const int MAXN = 100000 + 10;
LL dp[MAXN], a[MAXN], add[MAXN];
int n, m, k;
int main() {
int T; scanf("%d", &T);
for (int cas = 1; cas <= T; ++ cas) {
scanf("%d%d%d", &n, &m, &k);
for (int i = 0; i < n; ++ i) {
scanf("%I64d", a + i);
}
printf("Case #%d:\n", cas);
sort(a, a + n);
if (a[0] > m) {
puts("madan!");
continue;
}
int pt = lower_bound(a, a + n, m) - a;
if (a[pt] != m) -- pt;
LL st = a[pt];
for (; pt < n; ++ pt) {
if (k + st >= a[pt] && k + st < a[pt + 1]) {
st = a[pt]; -- k;
}
}
if (st + k >= a[n - 1]) puts("why am I so diao?");
else puts("madan!");
}
return 0;
}