#include #include using namespace std; int main(void) { int n, K; scanf("%d%d", &n, &K); vector a(n); for(int i=0; i dp(K+1); dp[0] = true; for(int i=0; i ndp(K+1); for(int k=0; k<=K; ++k) { // K を含めるのを忘れないように if(!dp[k]) { continue; } ndp[k] = true; // i番目を選ばない if(k + a[i] <= K) { ndp[k+a[i]] = true; // i番目を選ぶ } } dp = ndp; } for(int k=K; k>=0; --k) { if(dp[k]) { printf("%d\n", k); return 0; } } throw; }