Submission #567187

#TimeUsernameProblemLanguageResultExecution timeMemory
567187RifalKitchen (BOI19_kitchen)C++14
20 / 100
25 ms1004 KiB
#include <bits/stdc++.h> #include <fstream> #define endl '\n' #define mod 32768 #define INF 100000000 //#define ll long long //#define cin fin //#define cout fout using namespace std; //ofstream fout("convention.out"); //ifstream fin("convention.in"); const int M = 9e4 + 5; pair<bool,int> dp[M] = {}; void add(int x) { for(int i = M-1; i >= x; i--) { if(dp[i-x].first) { dp[i].first = 1; dp[i].second = min(dp[i].second,x); } } } int main() { int n, m, k; cin >> n >> m >> k; int meal[n], chef[m]; dp[0].first = 1; for(int i = 0; i < M; i++) { dp[i].second = INF; } long long sum = 0; bool ok = true; for(int i = 0; i < n; i++) { cin >> meal[i]; if(meal[i] < k) ok = false; sum += meal[i]; } for(int i = 0; i < m; i++) { cin >> chef[i]; add(chef[i]); } if(m < k || ok == false) { cout << "Impossible"; return 0; } for(int i = sum; i < M; i++) { if(dp[i].first == 1 && dp[i].second >= k && dp[i].second != INF) { cout << i-sum; return 0; } } cout << "Impossible"; return 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...