Tranvick

alogr_2

Dec 23rd, 2014
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.97 KB | None | 0 0
  1. #include <fstream>
  2. #include <algorithm>
  3.  
  4. const int N = 20;
  5.  
  6. struct Task {
  7.     int s, p, idx;
  8.  
  9.     bool operator< (const Task &t) const {
  10.         return p > t.p || p == t.p && s > t.s;
  11.     }
  12.  
  13. } tasks[N];
  14.  
  15. int n;
  16.  
  17. void input() {
  18.     std::ifstream fin("input.txt");
  19.     fin >> n;
  20.     for (int i = 0; i < n; ++i) {
  21.         fin >> tasks[i].s >> tasks[i].p;
  22.         tasks[i].idx = i + 1;
  23.     }
  24. }
  25.  
  26. int check_order() {
  27.     int serv = 0, proc1 = 0, proc2 = 0;
  28.     for (size_t i = 0; i < n; ++i) {
  29.         serv = std::max(serv, proc1) + tasks[i].s;
  30.         proc1 = serv + tasks[i].p;
  31.         if (proc1 > proc2) {
  32.             std::swap(proc1, proc2);
  33.         }
  34.     }
  35.     return proc2;
  36. }
  37.  
  38. void solve() {
  39.     std::ofstream fout("output.txt");
  40.     std::sort(tasks, tasks + n);
  41.     fout << check_order() << std::endl;
  42.     for (size_t i = 0; i < n; ++i) {
  43.         fout << tasks[i].idx << " ";
  44.     }
  45. }
  46.  
  47. int main() {
  48.     input();
  49.     solve();
  50.     return 0;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment