Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma comment(linker, "/STACK:640000000")
- #include<iostream>
- #include<fstream>
- #include<cstdio>
- #include<cassert>
- #include<cstring>
- #include<ctime>
- #include<cstdlib>
- #include<cmath>
- #include<string>
- #include<sstream>
- #include<map>
- #include<set>
- #include<queue>
- #include<stack>
- #include<vector>
- #include<bitset>
- #include<algorithm>
- #define pb push_back
- #define ppb pop_back
- #define mp make_pair
- #define all(x) (x).begin(),(x).end()
- #define sz(x) (int)(x).size()
- #define ll long long
- #define bit __builtin_popcountll
- #define sqr(x) (x) * (x)
- #define forit(it,S) for(__typeof((S).begin()) it = (S).begin(); it != (S).end(); it++)
- #define debug(x) cout << #x <<" = " << x << endl
- #define forn(i, n) for(int i = 0 ; (i) < (n) ; ++i)
- #define printvpair(v) for(int i = 0 ; (i) < (v.size()) ; ++i) cout << v[i].first <<" " << v[i].second << endl;
- #define printv(v) for(int i = 0 ; (i) < (v.size()) ; ++i) cout << v[i] << " "; cout << endl;
- using namespace std;
- typedef pair<int, int> pii;
- const double eps = 1e-9;
- const double pi = acos(-1.0);
- const int dx[4] = {0, 0, 1, -1};
- const int dy[4] = {1, -1, 0, 0};
- //const int N = 100001;
- int N,K;
- int dp[260][260][260];
- int solve(int n,int last,int len){
- if (n == 0 && len == K + 1){
- return dp[n][last][len] = 1;
- }
- if (dp[n][last][len] == -1){
- if (len < K + 1) {
- int ans = 0;
- for(int i = last; i <= N; i++)
- if (i > 0 && n - i >= 0){
- ans+=solve(n - i, i,len + 1);
- debug(ans);
- }
- return dp[n][last][len] = ans;
- }
- }
- else return dp[n][last][len];
- }
- int main() {
- ios_base::sync_with_stdio(0);
- memset(dp,-1,sizeof(dp));
- cin >> N >> K;
- int last = 0;
- cout << solve(N,last,1) << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement