数据可真精妙啊
1000000
8 9 2
2528 5049
#include <bits/stdc++.h>
using namespace std;
const int mod = 2520;
int l, s, t, m, ans = 0x3f3f3f3f;
int a[105], f[1000005];
int dp[1000005];
int main () {
scanf ("%d%d%d%d", &l, &s, &t, &m);
for (int i = 1; i <= m; i++){
scanf ("%d", &a[i]);
}
sort (a + 1, a + 1 + m);
for (int i = 1; i <= m; i++){
if (a[i] - a[i - 1] >= mod)
a[i] = a[i - 1] + (a[i] - a[i - 1]) % mod;
}
for (int i = 1; i <= m; i++){
f[a[i]] = 1;
}
int r = a[m] + t + 1;
memset (dp, 0x3f, sizeof (dp));
dp[0] = 0;
for (int i = 1; i <= r; i++){
for (int j = i - t; j <= i - s; j++){
if (j < 0){
continue;
}
if (j == 0){
dp[i] = dp[j];
}
else{
dp[i] = min (dp[i], dp[j]);
}
}
dp[i] += f[i];
}
for (int i = a[m]; i <= r; i++){
ans = min (ans, dp[i]);
}
printf ("%d", ans);
return 0;
}