Lang:G++
Edit123456789101112131415161718192021222324252627#include<cstdio>#define N 200010#define NN 100000#define MO 1000000007int m,n,t,a[N],ans,st1[N],st2[N],top;int main(){scanf("%d%d",&n,&m);st1[++top]=NN;st2[top]=1;for (int i=1;i<=n;i++){scanf("%d",&t);for (int j=0;j<=200000;j++)if (a[j]){st1[++top]=j;st2[top]=a[j];a[j]=0;}while (top){a[st1[top]+t]+=st2[top];a[st1[top]+t]%=MO;a[st1[top]-t]+=st2[top];a[st1[top]-t]%=MO;top--;}}printf("%d\n",a[m+NN]);return 0;}