《传智杯》,小红取数,c++,背包

小红拿到了一个数组,她想取一些数使得取的数之和尽可能大,但要求这个和必须是 k k\ k  的倍数。
你能帮帮她吗?

输入描述:

第一行输入两个正整数 n n\ n  和 k k\ k  

第二行输入 n n\ n  个正整数 ai a_i\ ai​ 

1≤n,k≤1031\leq n, k \leq 10^31≤n,k≤103

1≤ai≤10101 \leq a_i \leq 10^{10}1≤ai​≤1010

输出描述:

如果没有合法方案,输出 -1。
否则输出最大的和。

示例1

输入

5 5
4 8 2 9 1

输出

20

说明

取后四个数即可

#include 
using namespace std;
long long dp[1010][1010];
int main() {
    long long n,k,i,x,j;
    cin>>n>>k;
   for(i=1;i>x;
           
        for(j=0;j0?dp[n][0]:-1);
}

你可能感兴趣的:(c++,开发语言)