Submission #443700

#TimeUsernameProblemLanguageResultExecution timeMemory
443700Wasif_JamilZapina (COCI20_zapina)C++14
110 / 110
330 ms3268 KiB
// "Say:He is the Most Merciful,We have believed in him and upon him we have relied" [67:29] #include<bits/stdc++.h> using namespace std; #define int long long const int mod = 1e9 + 7; int ncr[351][351]; int dp[351][351][2]; int n; void fillncr(int n){ ncr[0][0] = 1; for(int i=1; i<=n; i++){ for(int j=0; j<=n; j++){ if(j > i)ncr[i][j] = 0; else if(j == i || j == 0)ncr[i][j] = 1; else ncr[i][j] = (ncr[i-1][j-1] + ncr[i-1][j])%mod; } } } int f(int persons, int tasks, int is_valid){ if(persons == n){ return (is_valid | (tasks == persons)); } if(tasks == 0){ return is_valid; } if(dp[persons][tasks][is_valid] != -1)return dp[persons][tasks][is_valid]; int ways = 0; for(int i=0; i<=tasks; i++){ ways += f(persons+1, tasks-i, is_valid|(persons == i)) * ncr[tasks][i]; ways %= mod; } return dp[persons][tasks][is_valid] = ways % mod; } signed main(){ memset(dp, -1, sizeof dp); fillncr(350); cin >> n; int val = f(1, n, 0); cout << val << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...