Advertisement
mihaimarcel21

Subset_Fight_depasire

Dec 8th, 2020
443
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.79 KB | None | 0 0
  1. #include <iostream>
  2. #define MOD 1000000007
  3. #define NMAX 5055      /// prea mare si insuficient pentru toate testele ... incearca numai pe PC-ul tau  
  4. using namespace std;
  5. int n, m, arr[NMAX], dp[NMAX][NMAX], x, la;
  6. bool v[NMAX][NMAX];
  7. int findCnt(int* arr, int i, int curr, int n, int m)
  8. {
  9.     if(i == n)
  10.     {
  11.         if(curr == 0)
  12.             return 1;
  13.         else
  14.             return 0;
  15.     }
  16.     if(v[i][curr])
  17.         return (dp[i][curr])%MOD;
  18.     v[i][curr] = 1;
  19.     return dp[i][curr] = (findCnt(arr,i+1,curr,n,m)+findCnt(arr,i+1,(curr+arr[i])%m, n, m))%MOD;
  20. }
  21. int main()
  22. {
  23.     int i;
  24.     cin>>n;
  25.     for(i=1; i<=n; i++)
  26.     {
  27.         cin>>x;
  28.         for(int j=0; j<x; j++)
  29.             arr[la++]=i;
  30.     }
  31.     m=n;
  32.     cout<<findCnt(arr, 0, 0, la, m);
  33.     return 0;
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement