aboutsummaryrefslogtreecommitdiff
path: root/works/life/algorithm-contest-2/solution/5.cpp
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-02-12 15:55:21 +0800
committerYuqian Yang <crupest@crupest.life>2025-02-12 15:55:21 +0800
commit10eb95869601e145b1d8bc909424777c25752d51 (patch)
tree49449a4076ded9bd937a51679318edbe2a532cae /works/life/algorithm-contest-2/solution/5.cpp
parent29ba3e88b1a7425fe00af0005b8a8228103aa21c (diff)
parentf8c10dd1fc55e60f35286475356e48c4f642eb63 (diff)
downloadcrupest-10eb95869601e145b1d8bc909424777c25752d51.tar.gz
crupest-10eb95869601e145b1d8bc909424777c25752d51.tar.bz2
crupest-10eb95869601e145b1d8bc909424777c25752d51.zip
import(life): IMPORT crupest/life COMPLETE.
Diffstat (limited to 'works/life/algorithm-contest-2/solution/5.cpp')
-rw-r--r--works/life/algorithm-contest-2/solution/5.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/works/life/algorithm-contest-2/solution/5.cpp b/works/life/algorithm-contest-2/solution/5.cpp
new file mode 100644
index 0000000..b668f95
--- /dev/null
+++ b/works/life/algorithm-contest-2/solution/5.cpp
@@ -0,0 +1,49 @@
+#include <iostream>
+#include <cstdio>
+#include <cstring>
+#include <algorithm>
+#include <vector>
+#include <queue>
+#include <stack>
+#include <set>
+#include <map>
+#include <cmath>
+#include <unordered_map>
+#include <unordered_set>
+#include <string>
+#include <sstream>
+#include <climits>
+#define x first
+#define y second
+#define pub push_back
+#define mp make_pair
+#define ll long long
+using namespace std;
+typedef pair<int, int> PII;
+
+int dp[1005][5][1005];
+int n, K, a[1005];
+
+int main(void) {
+ // freopen("3.in", "r", stdin);
+ cin >> n >> K;
+ for (int i = 1; i <= n; i++) cin >> a[i];
+
+ for (int i = 0; i < 1005; i++)
+ for (int j = 0; j < 4; j++)
+ for (int k = 0; k < 1005; k++)
+ dp[i][j][k] = INT_MIN;
+
+ dp[0][0][0] = 0;
+
+ for (int i = 1; i <= n; i++)
+ for (int j = 0; j <= 4; j++)
+ for (int k = 0; k < K; k++) {
+ if (j == 0) dp[i][j][k] = dp[i - 1][j][k];
+ else dp[i][j][k] = max(dp[i - 1][j][k], dp[i - 1][j - 1][((k - a[i]) % K + K) % K] + a[i]);
+ }
+
+
+ cout << dp[n][4][0];
+ return 0;
+} \ No newline at end of file