#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <math.h>
#include<vector>
#include<time.h>
using namespace std;
int songs[50];
const int jin=678;
int main(){
freopen("D:\\in.txt","r",stdin);
freopen("D:\\out.txt","w",stdout);
/*int T; cin>>T;
for(int k=0;k<T;k++){
if(k) cout<<endl;
memset(songs,0,sizeof(songs));
int n,t;
cin>>n>>t;
for(int i=0;i<n;i++)
cin>>songs[i];
sort(songs,songs+n);
int cnt=0;
int sonNum=0;
int i=0,j=0;
while(cnt<t&&j<n)
cnt+=songs[j++];
cnt-=songs[--j];
sonNum=j;
while(cnt<t&&j<n)
cnt=cnt-songs[i++]+songs[j++];
if(cnt>t)cnt=cnt+songs[i-1]-songs[j-1]+jin;
else cnt+=jin;
cout<<sonNum<<" "<<cnt;
}
return 0;
}*/
int T; cin>>T;
for(int k=0;k<T;k++){
if(k) cout<<endl;
memset(songs,0,sizeof(songs));
int n,t;
cin>>n>>t;
for(int i=1;i<=n;i++)
cin>>songs[i];
sort(songs,songs+n);
int d[109];
fill(d,d+109,-1000);
d[0]=0;
int best=0;
int time=0;
for(int i=1;i<=n;i++)
for(int j=t-1;j>=0;j--){
if(j>=songs[i]) d[j]=max(d[j],d[j-songs[i]]+1);
else d[j]=d[j];
if(i==n&&d[j]==best)time=max(j+jin,time);
if(i==n&&d[j]>best) best=d[j],time=j+jin;
}
cout<<"Case "<<k+1<<": "<<best+1<<" "<<time;
}
return 0;
}
uva12563
最新推荐文章于 2021-05-23 17:13:16 发布