Submission #567157

#TimeUsernameProblemLanguageResultExecution timeMemory
567157almothana05Kitchen (BOI19_kitchen)C++14
100 / 100
179 ms188160 KiB
#include<bits/stdc++.h>
#define mod 1000000007
#define inf 100000000000000000
using namespace std;
vector<int>num, chef , pow2;
pair<int ,int>mask[40000];
int sub[400][300 * 400];
void im(){
   cout << "Impossible\n";
}
string bi(int x){
   string cmp;
   while(x){
      if(x % 2 == 0){
         cmp += '0';
      }
      else{
         cmp += '1';
      }
      x /= 2;
   }
   return cmp;
}
int main(){
   // ios_base::sync_with_stdio(false);
   // cin.tie(NULL);
   for(int i = 1; i < 1000000 ; i *= 2){
      pow2.push_back(i);
   }
   int menge,  numm , nummer , koch , mini , re = 0 , rechner = 0;
   cin >> menge >> koch >> mini;
   if(koch < mini){
      im();
      return 0;
   }
   for(int i = 0 ; i < menge ; i++){
      cin >> numm;
      re += numm;
      num.push_back(numm);
      if(numm < mini){
         im();
         return 0;
      }
   }
   for(int i = 0 ; i < koch ; i++){
      cin >> numm;
      rechner += numm;
      chef.push_back(numm);
   }
   ///////////////////////////////////////////////////////////////////////////////////////////
   for(int i = 0 ; i < 400 ; i++){
      for(int j = 0 ; j < 400 * 300 ; j++){
         sub[i][j] = mod;
      }
   }
      sub[0][0] = menge * mini;
      for(int i = 0 ; i < koch ; i++){
         for(int j = 0 ; j <= i * 300 ; j++){
            if(sub[i][j] != mod){
               sub[i + 1][j] = min(sub[i + 1][j] ,sub[i][j]);
               sub[i + 1][j + chef[i]] = min(sub[i + 1][j + chef[i]] ,sub[i][j] - min(menge , chef[i])) ;
            // cout << "ja\n";
            }
         }
         // cout << "\n";
      }
      int erg = -1;
      for(int i = re ; i <= rechner ; i++){
         // cout << i << ' ';
         if(sub[koch][i] <= 0){
            // cout << "ja\n";
            erg = i - re ;
            break;   
         }
      }
      if(erg == -1){
         im();
         return 0;
      }
      else{
         cout << erg << "\n";
      }
      return 0;
   
}


Compilation message (stderr)

kitchen.cpp: In function 'int main()':
kitchen.cpp:30:23: warning: unused variable 'nummer' [-Wunused-variable]
   30 |    int menge,  numm , nummer , koch , mini , re = 0 , rechner = 0;
      |                       ^~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...