Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define NR_ITERATIONS 1000
- #define N 2000
- #define WC 20
- #define DAY_DURATION (8 * 60)
- #define SHIT_TIME 5
- int shit_times[N];
- int used[WC];
- std::vector<int> events[DAY_DURATION];
- int main() {
- srand(time(NULL));
- double total = 0.0;
- for (int iter = 0; iter < NR_ITERATIONS; iter++) {
- for (int i = 0; i < DAY_DURATION; i++) {
- events[i].clear();
- }
- for (int w = 0; w < WC; w++) {
- used[w] = 0;
- }
- for (int i = 0; i < N; i++) {
- shit_times[i] = rand() % DAY_DURATION;
- events[shit_times[i]].push_back(i);
- }
- int total_waiting_time = 0;
- std::set<std::pair<int, int> > Q;
- for (int i = 0; i < DAY_DURATION; i++) {
- for (int ev = 0; ev < events[i].size(); ev++) {
- Q.insert({i, events[i][ev]});
- }
- for (int w = 0; w < WC; w++) {
- if (used[w]) {
- used[w] --;
- }
- }
- for (int w = 0; w < WC; w++) {
- if (!used[w] && !Q.empty()) {
- total_waiting_time += i - Q.begin()->first;
- Q.erase(Q.begin());
- used[w] = SHIT_TIME;
- }
- }
- }
- double per_person = (total_waiting_time / N);
- total += per_person;
- std::cout << per_person << endl;
- }
- std::cout << "AVG: " << (total / NR_ITERATIONS) << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement