Submission #24
Details and source code
| ID | Time | User | Problem | Lang | Verdict |
|---|---|---|---|---|---|
| 24 | Mar 26, 2025, 05:02 AM | admin | Coinful Escapade | cpp | AC |
Source Code
cpp#include <bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, k;
cin >> n >> k;
vector<long long> coins(n);
for (int i = 0; i < n; i++) cin >> coins[i];
const long long MINF = -1e18;
vector<long long> dp0(k, MINF), dp1(k, MINF);
dp0[0] = 0;
vector<long long> ndp0(k, MINF), ndp1(k, MINF);
for (int i = 0; i < n; i++){
ndp0.assign(k, MINF);
ndp1.assign(k, MINF);
int add = coins[i] % k;
for (int r = 0; r < k; r++){
if(dp0[r] != MINF){
ndp0[r] = max(ndp0[r], dp0[r]);
int nr = (r + add) % k;
ndp1[nr] = max(ndp1[nr], dp0[r] + coins[i]);
}
if(dp1[r] != MINF){
ndp0[r] = max(ndp0[r], dp1[r]);
}
}
for(int r = 0; r < k; ++r) dp0[r] = ndp0[r], dp1[r] = ndp1[r];
}
long long ans = max(dp0[0], dp1[0]);
cout << (ans < 0 ? -1 : ans);
return 0;
}