Advertisement
Guest User

estacionamento_linear

a guest
Nov 20th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.14 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int numOfCars, cap, arrival, departure, indexA, t;  
  5. pair<int, int> cars[10100];
  6. stack<int, int> parking_lot;
  7. string answer;
  8.  
  9. int main() {
  10.    
  11.     scanf("%d %d", &numOfCars, &cap);
  12.    
  13.     while (numOfCars != 0 && cap != 0) {
  14.         answer = "Sim";
  15.        
  16.         for (int i = 0; i < numOfCars; i++) {
  17.             scanf("%d %d", &arrival, &departure);
  18.             cars[i] = make_pair(arrival, departure);
  19.         }
  20.        
  21.         indexA = 0;
  22.        
  23.         while (indexA < numOfCars || parking_lot.size() <= cap) {
  24.             // Tem alguem querendo sair?
  25.             while (!parking_lot.empty() && parking_lot.top().second <= t) {
  26.                 // O cara ta atrasado, deu merda
  27.                 if (parking_lot.top().second < t) {
  28.                     answer = "Nao";
  29.                     indexA = numOfCars;
  30.                     break;
  31.                 } else {
  32.                     parking_lot.pop(); // o cara sai normalmente
  33.                 }
  34.             }
  35.            
  36.             // Tem alguem querendo entrar?
  37.             while (indexA < numOfCars && cars[indexA].first <= t) {
  38.                 parking_lot.push(cars[indexA]);
  39.                 indexA++;
  40.             }
  41.            
  42.             t++;
  43.         }
  44.        
  45.         if (parking_lot.size() > cap)
  46.             answer = "Nao";
  47.        
  48.         cout << answer << endl;
  49.        
  50.         scanf("%d %d", &numOfCars, &cap);
  51.     }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement