Submission #532037

#TimeUsernameProblemLanguageResultExecution timeMemory
532037FoxyyFood Court (JOI21_foodcourt)C++17
2 / 100
1089 ms524292 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define Foxyy cin.tie(0); cout.tie(0); cout.sync_with_stdio(0);

const int INF = 0x3f3f3f3f;
mt19937 rng(chrono::steady_clock().now().time_since_epoch().count());

struct Solver {
	int &N, &M, &Q;
	
	vector<deque<int>> qu;
	
	Solver(int &_N, int &_M, int &_Q):
		N(_N), M(_M), Q(_Q) {
		qu.resize(N);
	}
	
	void enqueue(int L, int R, int C, int K) {
		for(int i = L; i < R; i++) {
			for(int k = 0; k < K; k++) {
				qu[i].push_back(C);
			}
		}
	}
	
	void dequeue(int L, int R, int K) {
		for(int i = L; i < R; i++) {
			for(int k = 0; k < K; k++) {
				if (qu[i].empty()) break;
				qu[i].pop_front();
			}
		}
	}
	
	int query(int A, ll B) {
		if ((int)qu[A].size() >= B) {
			return qu[A][B-1];
		} else {
			return 0;
		}
	}
	
	void solve() {
		while(Q--) {
			int T;
			cin >> T;
			if (T == 1) {
				int L, R, C, K;
				cin >> L >> R >> C >> K;
				enqueue(L-1, R, C, K);
			} else if (T == 2) {
				int L, R, K;
				cin >> L >> R >> K;
				dequeue(L-1, R, K);
			} else if (T == 3) {
				int A;
				ll B;
				cin >> A >> B;
				cout << query(A-1, B) << '\n';
			}
		}
	}
};

signed main() {
	Foxyy
	
	int N, M, Q;
	cin >> N >> M >> Q;
	Solver solver{N, M, Q};
	solver.solve();
}
#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...