#include<iostream>
#include<string>
#include<cassert>
#include<algorithm>
#include<map>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<vector>
#include<set>
#include<sstream>
#include<fstream>
#include<cstdio>
#include<queue>
#include<unordered_map>
#include<tuple>
#include<complex>
#include<chrono>
#include<iomanip>
using namespace std;
const int INF = 1000000000;
int number[50 + 5][181 * 51 + 678];
int main()
{
freopen("input.txt", "r", stdin);
int tmp;
scanf("%d", &tmp);
for (int kase = 1; kase <= tmp; ++kase)
{
int n;
scanf("%d", &n);
int t;
scanf("%d", &t);
int songs[50 + 5];
memset(number, 0xcf, sizeof(number));
for (int i = 1; i <= n; ++i)
{
scanf("%d", &songs[i]);
}
number[0][0] = 0;
for (int i = 1; i <= n; ++i)
{
for (int j = 0; j < t; ++j)
{
number[i][j] = number[i - 1][j];
if (j >= songs[i])
{
number[i][j] = max(number[i][j], number[i - 1][j - songs[i]] + 1);
}
}
}
int ans = t - 1;
for (int i = t - 2; i >= 0; --i)
{
if (number[n][i] > number[n][ans])
ans = i;
}
cout << "Case " << kase << ": " << number[n][ans] + 1 << " " << ans + 678 << endl;
}
}
紫书劲歌金曲 UVa12563
最新推荐文章于 2024-06-15 23:36:03 发布