Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 1e4;
- const int MD = 2012;
- int dp[N + 1], qs[N + 1];
- int main(){
- int x, k;
- scanf("%d%d", &x, &k);
- dp[0] = 1;
- dp[1] = 1;
- for(int i = 0; i <= 6; ++i){
- qs[i] = (i < 1 ? 0 : qs[i - 1]) + dp[i];
- }
- for(int i = 3; i <= x; ++i){
- int upb = min(k, i * (i - 1) / 2);
- for(int j = 0; j <= upb; ++j){
- dp[j] = (MD + qs[j] - (j - i < 0 ? 0 : qs[j - i])) % MD;
- }
- upb = min(k, i * (i + 1) / 2);
- for(int j = 0; j <= upb; ++j){
- qs[j] = ((j < 1 ? 0 : qs[j - 1]) + dp[j]) % MD;
- }
- }
- cout << dp[k];
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement