Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int n, k;
- int task[21];
- vector<int> mach;
- int ans = INT_MAX;
- void dfs(int idx){
- if(idx==n){
- int value = *max_element(mach.begin(), mach.end());
- ans = min(ans, value);
- return;
- }
- for(int i=0; i<k; i++){
- if(mach[i]+task[idx]<=ans){
- mach[i]+=task[idx];
- dfs(idx+1);
- mach[i]-=task[idx];
- }
- if(mach[i]==0) break;
- }
- }
- int main(){
- //freopen("workdivision.in", "r", stdin);
- cin >> n >> k;
- mach.resize(k, 0);
- for(int i=0; i<n; i++){
- cin >> task[i];
- }
- sort(task, task+n, greater<int>());
- //for(int i=0; i<n; i++){
- //cout << task[i] << '\n';
- //}
- dfs(0);
- cout << ans << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement