Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #define MOD 1000000007
- #define NMAX 5055 /// prea mare si insuficient pentru toate testele ... incearca numai pe PC-ul tau
- using namespace std;
- int n, m, arr[NMAX], dp[NMAX][NMAX], x, la;
- bool v[NMAX][NMAX];
- int findCnt(int* arr, int i, int curr, int n, int m)
- {
- if(i == n)
- {
- if(curr == 0)
- return 1;
- else
- return 0;
- }
- if(v[i][curr])
- return (dp[i][curr])%MOD;
- v[i][curr] = 1;
- return dp[i][curr] = (findCnt(arr,i+1,curr,n,m)+findCnt(arr,i+1,(curr+arr[i])%m, n, m))%MOD;
- }
- int main()
- {
- int i;
- cin>>n;
- for(i=1; i<=n; i++)
- {
- cin>>x;
- for(int j=0; j<x; j++)
- arr[la++]=i;
- }
- m=n;
- cout<<findCnt(arr, 0, 0, la, m);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement