思路一定要清晰!

/*
* Author: Bingo
* Created Time: 2014/12/25 3:45:35
* File Name: uva12563.cpp
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <string>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <time.h>
using namespace std;
const int maxint = -1u>>; int main()
{
int T;
int c=;
cin>>T;
while(T--){
int n,time;
cin>>n>>time;
int f[n+][*n+];
int anss[n+][*n+];
memset(anss,,sizeof(anss));
memset(f,,sizeof(f));
int v;
for (int i=;i<=n;i++){
scanf("%d",&v);
for (int j=;j<=time-;j++){
f[i][j]=(i==?:f[i-][j]);
anss[i][j]=(i==?:anss[i-][j]);
if (j>=v)if (f[i][j]<=f[i-][j-v]+){
if (f[i][j]==f[i-][j-v]+) anss[i][j]=max(anss[i][j],anss[i-][j-v]+v);
else anss[i][j]=anss[i-][j-v]+v;
f[i][j]=f[i-][j-v]+;
}
}
}
cout<<"Case "<<c<<": ";
c++; cout<<f[n][time-]+<<" "<<anss[n][time-]+<<endl;
}
return ;
}