Advertisement
Guest User

Untitled

a guest
Oct 14th, 2017
272
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.48 KB | None | 0 0
  1. /*
  2. ID: bradyawn
  3. PROG: cf
  4. LANG: C++11
  5. */
  6. #include <iostream>
  7. #include <algorithm>
  8. #include <iomanip>
  9. #include <fstream>
  10. #include <vector>
  11. #include <string>
  12. #include <cmath>
  13. #include <map>
  14. #include <utility>
  15. #include <algorithm>
  16. #include <set>
  17. #include <ctime>
  18. #include <queue>
  19.  
  20. //#define inf cin
  21. //#define outf cout
  22.  
  23. using namespace std;
  24.  
  25. int main()
  26. {
  27.     //ifstream inf("");
  28.     //ofstream outf("");
  29.     //cout << setprecision(10);
  30.    
  31.     int n, k;
  32.     cin >> n >> k;
  33.  
  34.     vector<int> time(n);
  35.     //for (int i = 0; i < n; i++) time[i] = i+1;
  36.    
  37.     vector<pair<int, int>> cost;
  38.    
  39.     for (int i = 0; i < n; i++)
  40.     {
  41.         int t;
  42.         cin >> t;
  43.         cost.push_back({t, i});
  44.     }
  45.    
  46.      vector<pair<int, int>> retcost = cost;
  47.    
  48.     sort(cost.begin(), cost.end());
  49.    
  50.     int when = k+1;
  51.    
  52.     for (int i = cost.size()-1; i >= 0; i--)
  53.     {
  54.         if (time[cost[i].second] == 0) //dont overwrite
  55.         {
  56.            
  57.         int bef = i; //store before finding
  58.            
  59.         while (cost[i].second+1 > when) {i--;}
  60.         time[cost[i].second] = when;
  61.         when++;
  62.            
  63.         if (i < bef) i = bef+1; //jump back
  64.         }
  65.     }
  66.    
  67.     unsigned long long ret = 0;
  68.    
  69.     for (int i = 0; i < n; i++)
  70.     {
  71.         ret += retcost[i].first * (time[i] - (i+1));
  72.     }
  73.    
  74.     cout << ret << endl;
  75.    
  76.     for (int i = 0; i < n; i++) cout << time[i] << " \n"[i == n-1];
  77.    
  78.     return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement