Submission #1340125

#TimeUsernameProblemLanguageResultExecution timeMemory
1340125avighnaFood Court (JOI21_foodcourt)C++20
7 / 100
1104 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<pair<int64_t, int>>> shops(n);

  auto leave = [&](deque<pair<int64_t, int>> &a, int64_t k) {
    int64_t left = 0;
    int pgroup;
    while (!a.empty() && left < k) {
      auto [num, group] = a.front();
      a.pop_front();
      left += num;
      pgroup = group;
    }
    if (left > k) {
      a.push_front({left - k, pgroup});
    }
  };

  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) {
        shops[i].push_back({k, c});
      }
    } else if (t == 2) {
      int64_t l, r, k;
      cin >> l >> r >> k;
      --l, --r;
      for (int i = l; i <= r; ++i) {
        leave(shops[i], k);
      }
    } else {
      int64_t a, b;
      cin >> a >> b;
      --a, --b;
      int64_t sz = 0;
      int found = 0;
      for (int i = 0; i < shops[a].size() && !found; ++i) {
        sz += shops[a][i].first;
        if (b < sz) {
          cout << shops[a][i].second << '\n';
          found = 1;
        }
      }
      if (!found) {
        cout << "0\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...