代码
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
int l,s,t,m,a[1000],sz[10000000],f[10000000]={0},ans(0);
int main() {
scanf("%d",&l);
scanf("%d%d%d",&s,&t,&m);
for(int i=1;i<=m;i++){
scanf("%d",&a[i]);
}
if(s==t){
for(int i=1;i<=m;i++){
if(a[i]%s==0) ans++;
}
printf("%d\n",ans);
return 0;
}
sort(a+1,a+1+m);
for(int i=1;i<=m;i++){
if(a[i+1]-a[i]>90)a[i+1]=a[i]+(a[i+1]-a[i])%90;
}
if(l-a[m]>90) l=a[m]+(l-a[m])%90;
for(int i=0;i<=l;i++){
f[i]=1<<30;
}
for(int i=1;i<=m;i++){
sz[a[i]]=1;
}
for(int i=s;i<=t;i++){
if(sz[i]==1){
f[i]=1;
}
else f[i]=0;
}
for(int i=2*s;i<=l;i++){
for(int j=s;j<=t;j++){
if(j>i) break;
f[i]=min(f[i-j],f[i]);
}
if(sz[i]==1){
f[i]++;
}
}
printf("%d\n",f[l]);
return 0;
}