Advertisement
Guest User

Cmp - 2012

a guest
Oct 5th, 2017
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.56 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. #define pb push_back
  4. #define mp make_pair
  5.  
  6. #define all(v) (v).begin(), (v).end()
  7. #define LEN(v) (int)(v).size()
  8.  
  9. #define uni(v) {                                           \
  10.     sort(all(v));                                          \
  11.     (v).erase(unique(all(v)), (v).end());                  \
  12. }
  13.  
  14. #define pp pop_back
  15. #define MEM(a, b); memset(a, b, sizeof(a))
  16.  
  17. using namespace std;
  18. const int maxrooms = 101;
  19. const int maxteachersset = 16385;
  20. const int NOT_REACHED = 100000000;
  21.  
  22. double res[maxrooms][maxteachersset];
  23. int rooms, teachers;
  24. int room[maxrooms], teacher[maxteachersset];
  25.  
  26. double solve(int pos, int state){
  27.     if(res[pos][state] == NOT_REACHED){
  28.         for(int i = 0; i < teachers; i++){
  29.             if(!(state & (1 << i))){
  30.                 double time = (double) room[pos] / teacher[i];
  31.         int mask = (state | (1 << i));
  32.                 for(int j = pos; j < rooms and time < res[pos][state]; j++, time += (double)room[j] / teacher[i]){
  33.                     res[pos][state] = min(res[pos][state], max(time, solve(j + 1, mask)));
  34.                 }
  35.             }
  36.         }
  37.     }
  38.     return res[pos][state];
  39. }
  40.  
  41. int main() {
  42.     ios::sync_with_stdio(false);
  43.     cin.tie(0); cout.tie(0);
  44.  
  45.     cin >> rooms >> teachers;
  46.     MEM(res, NOT_REACHED);
  47.     for(int j = 0; j < (1 << teachers); j++){
  48.         res[rooms][j] = 0;
  49.     }
  50.     for(int i = 0; i < rooms; i++){
  51.         cin >> room[i];
  52.     }
  53.     for(int i = 0; i < teachers; i++){
  54.         cin >> teacher[i];
  55.     }
  56.     cout << solve(0, 0);
  57.     return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement