fork(10) download
  1. #include <iostream>
  2. #include <cstring>
  3. #define INF 1000000000
  4.  
  5.  
  6. using namespace std;
  7.  
  8. int cost[1000], value[1000], n, X, dp[1000][1000];
  9.  
  10. int solve(int idx, int val){
  11. if(idx == n){
  12. if(val >= X) return 0;
  13. else return INF;
  14. }
  15. if(dp[idx][val] != -1) return dp[idx][val];
  16. int v = solve(idx+1, val);
  17. v = min(v, solve(idx+1, val + value[idx]) + cost[idx]);
  18. return dp[idx][val] = v;
  19. }
  20.  
  21. int main(){
  22. cin >> n >> X;
  23. for(int i = 0;i < n;i++){
  24. cin >> cost[i] >> value[i];
  25. }
  26. memset(dp, -1, sizeof dp);
  27. int ans = solve(0, 0);
  28. if(ans != INF)cout << solve(0, 0) << endl;
  29. else cout << "IMPOSSIBLE" << endl;
  30. return 0;
  31. }
Success #stdin #stdout 0.01s 7376KB
stdin
5
2
2 3
4 5
2 4
1 6
6 3
stdout
1