Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- #include <math.h>
- #include <vector>
- #include <set>
- #include <unordered_set>
- #include <tuple>
- #include <map>
- #include <unordered_map>
- #include <string>
- #include <string.h>
- #include <utility>
- #include <algorithm>
- #include <queue>
- #include <deque>
- #include <iterator>
- #include <stdlib.h>
- #include <cstdlib>
- #include <bitset>
- #include <fstream>
- #include <iomanip>
- // #pragma GCC optimize("Ofast,no-stack-protector")
- // #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,tune=native")
- // #pragma GCC optimize("unroll-loops")
- // #pragma GCC optimize("fast-math")
- // #pragma GCC optimize("vpt")
- // #pragma GCC optimize("rename-registers")
- // #pragma GCC optimize("move-loop-invariants")
- // #pragma GCC optimize("unswitch-loops")
- // #pragma GCC optimize("branch-target-load-optimize")
- // #pragma GCC optimize("branch-target-load-optimize2")
- // #pragma GCC optimize("btr-bb-exclusive")
- typedef long long ll;
- typedef long double ld;
- #define all(x) x.begin(), x.end()
- using namespace std;
- int main() {
- int n = 0, k = 0; cin >> n >> k;
- vector<vector<ll>> dp(k + 2, vector<ll> (n + 2, 0));
- for (int i = 1; i <= n; ++i) {
- dp[1][i] = 1;
- }
- for (int i = 2; i <= k; ++i) {
- for (int j = 2; j <= n; ++j) {
- for (int q = 0; q <= j - 2; ++q) {
- dp[i][j] += dp[i - 1][q] * (j - q - 1);
- }
- }
- }
- cout << dp[k][n];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement