Submission #1779295


Source Code Expand

#include <cstdio>
#include <vector>
#include <string>
using namespace std;

const int MOD = 1e9 + 7;

int dp[2001][2001];

int dfs(int a, int b, int k) {
        if (a + b == 1) return dp[a][b] = 1;
        if (a + b == k) {
                if (a == k || b == k) return dp[a][b] = 0;
                return dp[a][b] = 1;
        }
        if (dp[a][b] > 0) return dp[a][b];
        int &res = dp[a][b];
        res = 0;
        for (int i = 0; i < k; i ++) if (a >= i && b >= k - i - 1) (res += dfs(a - i, b - (k - i - 1), k)) %= MOD;
        return res;
}

int main() {
        int n, m, k, ans = 0;
        scanf("%d%d%d", &n, &m, &k);
        memset(dp, -1, sizeof dp);
        for (int i = n; i > 0; i -= k - 1) for (int j = m; j > 0; j -= k - 1) (ans += dfs(i, j, k)) %= MOD;
        printf("%d\n", ans);
        return 0;
}

Submission Info

Submission Time
Task E - Eternal Average
User KokiYmgch
Language C++14 (GCC 5.4.1)
Score 0
Code Size 860 Byte
Status CE

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:26:33: error: ‘memset’ was not declared in this scope
         memset(dp, -1, sizeof dp);
                                 ^
./Main.cpp:25:36: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d%d", &n, &m, &k);
                                    ^