Guest User

Untitled

a guest
May 2nd, 2018
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.87 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define MAXK 10010
  3. using namespace std;
  4. ifstream in("input.txt");
  5. ofstream out("output.txt");
  6. int main(){
  7.     int n, k, cont = 0;
  8.     in >> n >> k;
  9.     int vet[n], memo[n][MAXK], min_ = INT_MAX;
  10.     for(int i = 0; i < n; i++){
  11.         in >> vet[i - cont];
  12.         if(vet[i - cont] > k){
  13.             min_ = min(min_, vet[i - cont]);
  14.             cont ++;
  15.         }
  16.     }
  17.     n -= cont;
  18.     for(int i = 0; i < n; i++){
  19.         for(int j = 0; j < MAXK; j++){
  20.             if(i == 0){
  21.                 if(vet[i] > j){
  22.                     memo[i][j] = k;
  23.                 }else{
  24.                     memo[i][j] = k - vet[i];
  25.                 }
  26.             }else{
  27.                 if(vet[i] > j){
  28.                     memo[i][j] = memo[i-1][j];
  29.                 }else{
  30.                     memo[i][j] = memo[i-1][j-vet[i]] - vet[i];
  31.                 }
  32.             }
  33.         }
  34.     }
  35.     int ris = min_;
  36.     for(int j = k; j < min_ && j < MAXK; j++){
  37.         for(int i = 0; i < n; i++){
  38.             if(memo[i][j] <= 0){
  39.                 ris = min(ris, k - memo[i][j]);
  40.             }
  41.         }
  42.     }
  43.     out << ris;
  44.     return 0;
  45. }
Add Comment
Please, Sign In to add comment