MAGCARI

TOI19 Energy

Jun 5th, 2023
967
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.83 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define endl "\n";
  3. #define MOD (ll )(1e9+7)
  4. using ll = long long;
  5. using namespace std;
  6. int dp[1010],k,d,n;
  7. ll memo[310][310][12];
  8. ll mcm(int l,int r,int lev){
  9.     if(memo[l][r][lev] != -1)
  10.         return memo[l][r][lev];
  11.     int cnt=0;
  12.     if(lev == k-1){
  13.         for(int i=l;i<r;i++){
  14.             if(abs((dp[r]-dp[i]) - (dp[i]-dp[l-1])) <= d){
  15.                 cnt++;
  16.             }  
  17.         }
  18.         return cnt;
  19.     }
  20.     ll ret = 0;
  21.     for(int i=l;i<r;i++){
  22.         if(abs((dp[r]-dp[i]) - (dp[i]-dp[l-1])) <= d){
  23.             ret+=(mcm(l,i,lev+1)*mcm(i+1,r,lev+1))%MOD;
  24.             ret%=MOD;
  25.         }
  26.     }
  27.     return memo[l][r][lev] = ret;
  28. }
  29. int main(){
  30.     cin.tie(0) -> sync_with_stdio(0);
  31.     cin.exceptions(cin.failbit);
  32.     cin>>n>>k>>d;
  33.     for(int i=1;i<=n;i++){
  34.         cin>>dp[i];
  35.         dp[i]+=dp[i-1];
  36.     }
  37.     memset(memo,-1,sizeof memo);
  38.     cout<<mcm(1,n,1);
  39.     return 0;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment