fork download
  1. #include<stdio.h>
  2. #define MOD 1000000007
  3. typedef long long ll;
  4. ll solve(ll arr[],ll dim[],ll n,ll m)
  5. {
  6. ll ans=0;
  7. if(m==0)
  8. return 1;
  9. else if(m<0)
  10. return 0;
  11. else
  12. {
  13. ans=0;
  14. for(int i=0;i<n;i++)
  15. {
  16. if(arr[i]+1<=dim[i])
  17. {
  18. arr[i]++;
  19. ans+=solve(arr,dim,n,m-1); //First recursion
  20. ans%=MOD;
  21. arr[i]--; //To comeback to present prosition to try next dimension
  22. }
  23. if(arr[i]-1>0)
  24. {
  25. arr[i]--;
  26. ans+=solve(arr,dim,n,m-1); //Second recursion
  27. ans%=MOD;
  28. //arr[i]++; //To comeback to present prosition to try next dimension
  29. }
  30. }
  31.  
  32. }
  33. return ans%MOD;
  34. }
  35. int main()
  36. {
  37. ll test,n,m;
  38. scanf("%lld",&test);
  39. while(test--)
  40. {
  41. scanf("%lld%lld",&n,&m);
  42. ll arr[n],dim[n];
  43. for(int i=0;i<n;i++)
  44. scanf("%lld",&arr[i]);
  45. for(int i=0;i<n;i++)
  46. scanf("%lld",&dim[i]);
  47. printf("%lld\n",solve(arr,dim,n,m));
  48. }
  49. return 0;
  50. }
Success #stdin #stdout 0s 2732KB
stdin
10
1 287
44
78
1 236
25
87
1 122
41
63
1 260
7
64
1 127
3
73
1 69
6
68
1 231
14
63
1 236
13
30
1 259
38
70
1 257
11
12
stdout
75
84
61
63
71
66
61
27
67
10