Advertisement
Guest User

Untitled

a guest
Apr 26th, 2018
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.25 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define NR_ITERATIONS 1000
  4. #define N 2000
  5. #define WC 20
  6. #define DAY_DURATION (8 * 60)
  7. #define SHIT_TIME 5
  8.  
  9. int shit_times[N];
  10. int used[WC];
  11. std::vector<int> events[DAY_DURATION];
  12.  
  13. int main() {
  14.     srand(time(NULL));
  15.  
  16.     double total = 0.0;
  17.     for (int iter = 0; iter < NR_ITERATIONS; iter++) {
  18.         for (int i = 0; i < DAY_DURATION; i++) {
  19.             events[i].clear();
  20.         }
  21.         for (int w = 0; w < WC; w++) {
  22.             used[w] = 0;
  23.         }
  24.         for (int i = 0; i < N; i++) {
  25.             shit_times[i] = rand() % DAY_DURATION;
  26.             events[shit_times[i]].push_back(i);
  27.         }
  28.  
  29.         int total_waiting_time = 0;
  30.         std::set<std::pair<int, int> > Q;
  31.         for (int i = 0; i < DAY_DURATION; i++) {
  32.             for (int ev = 0; ev < events[i].size(); ev++) {
  33.                 Q.insert({i, events[i][ev]});
  34.             }
  35.             for (int w = 0; w < WC; w++) {
  36.                 if (used[w]) {
  37.                     used[w] --;
  38.                 }
  39.             }
  40.             for (int w = 0; w < WC; w++) {
  41.                 if (!used[w] && !Q.empty()) {
  42.                     total_waiting_time += i - Q.begin()->first;
  43.                     Q.erase(Q.begin());
  44.                     used[w] = SHIT_TIME;
  45.                 }
  46.             }
  47.         }
  48.  
  49.         double per_person = (total_waiting_time / N);
  50.         total += per_person;
  51.         std::cout << per_person << endl;
  52.     }
  53.  
  54.     std::cout << "AVG: " << (total / NR_ITERATIONS) << endl;
  55.  
  56.     return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement