Advertisement
Guest User

Untitled

a guest
Jan 21st, 2020
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.66 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. typedef long long ll;
  4.  
  5. #define fr first
  6. #define sc second
  7. #define pii pair <int, int>
  8.  
  9. using namespace std;
  10.  
  11. int main() {
  12.     ios_base::sync_with_stdio(0);
  13.     cin.tie(0); cout.tie(0);
  14.     int cnt_1 = 1, cnt_2 = 1;
  15.     int t_1 = 30, t_2 = 15;
  16.     int t_need_1 = 11, t_need_2 = 6;
  17.     int mem_1 = 8, mem_2 = 4;
  18.     vector <bool> use(36);
  19.     queue <pii> need_1, need_2;
  20.     int crash = -1, num = 0;
  21.     ll time = 0;
  22.     while (crash == -1) {
  23.         if (!need_1.empty() && need_1.front().fr <= time) {
  24.             for (int i = need_1.front().sc; i < need_1.front().sc + mem_1; i++) use[i] = 0;
  25.             need_1.pop();
  26.         }
  27.         if (!need_2.empty() && need_2.front().fr <= time) {
  28.             for (int i = need_2.front().sc; i < need_2.front().sc + mem_2; i++) use[i] = 0;
  29.             need_2.pop();
  30.         }
  31.         if (cnt_1 > 0 && time % t_need_1 == 0) {
  32.             bool ok = 0;
  33.             int n_ans = -1;
  34.             for (int i = 0; i < 36; i++) {
  35.                 if (!use[i]) {
  36.                     int cnt = 0;
  37.                     for (int j = 0; j + i < 36 && j < mem_1; j++, cnt++) {
  38.                         if (use[i + j]) {
  39.                             cnt = -1;
  40.                             break;
  41.                         }
  42.                     }
  43.                     if (cnt == mem_1) {
  44.                         n_ans = i;
  45.                         ok = 1;
  46.                         break;
  47.                     }
  48.                 }
  49.             }
  50.             if (!ok) crash = 1, num = cnt_1;
  51.             if (crash == -1) for (int i = n_ans; i < n_ans + mem_1; i++) use[i] = 1;
  52.             if (n_ans != -1) need_1.push({time + t_1, n_ans});
  53.             cnt_1++;
  54.         }
  55.         if (cnt_2 > 0 && time % t_need_2 == 0) {
  56.             bool ok = 0;
  57.             int n_ans = -1;
  58.             for (int i = 0; i < 36; i++) {
  59.                 if (!use[i]) {
  60.                     int cnt = 0;
  61.                     for (int j = 0; j + i < 36 && j < mem_2; j++, cnt++) {
  62.                         if (use[i + j]) {
  63.                             cnt = -1;
  64.                             break;
  65.                         }
  66.                     }
  67.                     if (cnt == mem_2) {
  68.                         n_ans = i;
  69.                         ok = 1;
  70.                         break;
  71.                     }
  72.                 }
  73.             }
  74.             if (!ok) crash = 2, num = cnt_2;
  75.             if (crash == -1) for (int i = n_ans; i < n_ans + mem_2; i++) use[i] = 1;
  76.             cnt_2++;
  77.             if (n_ans != -1) need_2.push({time + t_2, n_ans});
  78.         }
  79.         time++;
  80.     }
  81.     cout << crash << " " << num;
  82.     return 0;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement