제출 #1340154

#제출 시각아이디문제언어결과실행 시간메모리
1340154avighna푸드 코트 (JOI21_foodcourt)C++20
9 / 100
1096 ms589824 KiB
#include <bits/stdc++.h>

using namespace std;

int main() {
  cin.tie(nullptr)->sync_with_stdio(false);

  int n, m, q;
  cin >> n >> m >> q;

  // {num, group}
  vector<deque<int>> shops(n);

  set<int> st;
  vector<int> lqu;
  auto leave = [&](int i, int64_t k) {
    deque<int> &a = shops[i];
    for (int i = 0; !a.empty() && i < k; ++i) {
      a.pop_front();
    }
    if (a.empty()) {
      lqu.push_back(i);
    }
  };

  while (q--) {
    int t;
    cin >> t;
    if (t == 1) {
      int64_t l, r, c, k;
      cin >> l >> r >> c >> k;
      --l, --r;
      for (int i = l; i <= r; ++i) {
        for (int j = 0; j < k; ++j) {
          shops[i].push_back(c);
        }
        if (!shops[i].empty()) {
          st.insert(i);
        }
      }
    } else if (t == 2) {
      int64_t l, r, k;
      cin >> l >> r >> k;
      --l, --r;
      for (auto it = st.lower_bound(l); it != st.end() && *it <= r; ++it) {
        leave(*it, k);
      }
      for (int &i : lqu) {
        st.erase(i);
      }
      lqu.clear();
    } else {
      int64_t a, b;
      cin >> a >> b;
      --a, --b;
      int64_t sz = 0;
      int found = 0;
      if (b >= shops[a].size()) {
        cout << "0\n";
      } else {
        cout << shops[a][b] << '\n';
      }
    }
  }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...