Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define MAXK 10010
- using namespace std;
- ifstream in("input.txt");
- ofstream out("output.txt");
- int main(){
- int n, k, cont = 0;
- in >> n >> k;
- int vet[n], memo[n][MAXK], min_ = INT_MAX;
- for(int i = 0; i < n; i++){
- in >> vet[i - cont];
- if(vet[i - cont] > k){
- min_ = min(min_, vet[i - cont]);
- cont ++;
- }
- }
- n -= cont;
- for(int i = 0; i < n; i++){
- for(int j = 0; j < MAXK; j++){
- if(i == 0){
- if(vet[i] > j){
- memo[i][j] = k;
- }else{
- memo[i][j] = k - vet[i];
- }
- }else{
- if(vet[i] > j){
- memo[i][j] = memo[i-1][j];
- }else{
- memo[i][j] = memo[i-1][j-vet[i]] - vet[i];
- }
- }
- }
- }
- int ris = min_;
- for(int j = k; j < min_ && j < MAXK; j++){
- for(int i = 0; i < n; i++){
- if(memo[i][j] <= 0){
- ris = min(ris, k - memo[i][j]);
- }
- }
- }
- out << ris;
- return 0;
- }
Add Comment
Please, Sign In to add comment