Advertisement
Guest User

Untitled

a guest
May 20th, 2018
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.02 KB | None | 0 0
  1. #include <iostream>
  2. #include <map>
  3. #include <vector>
  4. #include <algorithm>
  5.  
  6. using namespace std;
  7. vector<int> res;
  8. vector<char> used;
  9. int n, k, d, l = 0;
  10. int minn = 2000000000;
  11. int a[6011];
  12.  
  13. int f(vector<int> res) {
  14.     sort(res.begin(), res.end());
  15.     int c = 0;
  16.     for (int i = 0; i < res.size(); ++i) {
  17.         c+=a[res[i]];
  18.         if (i > 0) {
  19.             c += ((res[i]- res[i-1])-1)*d;
  20.         }
  21.     }
  22.     return c;
  23. }
  24.  
  25. void dfs() {
  26.     int mc = 2000000000, c = 0;
  27.     int top = 1;
  28.     for (int i = 1; i <= l + 1; ++i) {
  29.         if (!used[i]) {
  30.             res.push_back(i);
  31.             c = f(res);
  32.             if (c < mc) {
  33.                 mc = c;
  34.                 top = i;
  35.             }
  36.             res.pop_back();
  37.         }
  38.     }
  39.     used[top] = true;
  40.     res.push_back(top);
  41.     minn = mc;
  42.     ++l;
  43. }
  44.  
  45. int main() {
  46.     cin >> n >> k;
  47.     used.resize(n + k + 1);
  48.     for (int i = 1; i <= n + k; ++i) {
  49.         used[i] = false;
  50.         cin >> a[i];
  51.     }
  52.     cin >> d;
  53.     l = n;
  54.  
  55.     while(l < n+k) dfs();
  56.  
  57.     sort(res.begin(), res.end());
  58.        
  59.     if (minn != 2000000000) {
  60.         cout << minn << endl;
  61.         for (auto el : res) printf("%d ", el);
  62.     }
  63.    
  64.     return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement