Guest User

SRM 768 Div21000

a guest
Oct 10th, 2019
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.91 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define pb push_back
  5.  
  6. typedef long long ll;
  7. typedef vector<ll> vll;
  8. const ll mod = 1e9 + 7;
  9.  
  10. struct MeanMedianCount {
  11.     int n, mean, median;
  12.     ll solve(vector<vector<vll> >& dp, int i, int s, int p) {
  13.         if (i == n + 1) {
  14.             if (s < (mean * n)) return 0;
  15.             if (p <= n / 2) return 0;
  16.             return 1;
  17.         }
  18.         if (dp[i][s][p] != -1)
  19.             return dp[i][s][p];
  20.         ll ans = 0;
  21.         for (int gr = 0; gr <= 10; ++gr) {
  22.             ans += solve(dp, i + 1, s + gr, p + (gr >= median));
  23.             ans %= mod;
  24.         }
  25.         return dp[i][s][p] = ans;
  26.     }
  27.     int getCount(int N, int needMean, int needMedian) {
  28.         n = N;
  29.         mean = needMean;
  30.         median = needMedian;
  31.         vector<vector<vll> > dp(n + 2, vector<vll>(10 * (n + 2), vll((n + 2), -1)));
  32.         return solve(dp, 1, 0, 0);
  33.     }
  34. };
  35.  
  36. int main() {
  37.     ios::sync_with_stdio(false);cin.tie(nullptr);
  38.     MeanMedianCount mc;
  39.     cout << mc.getCount(5, 10, 8) << "\n";
  40. }
Add Comment
Please, Sign In to add comment