Submission #1228225

#TimeUsernameProblemLanguageResultExecution timeMemory
1228225LaMatematica14Bring Down the Grading Server (CEOI23_gradingserver)C++20
0 / 100
4103 ms251036 KiB
#include <bits/stdc++.h> using namespace std; int main() { int S, Q; cin >> S >> Q; map<array<int, 4>, bool> dp; for (int i = 0; i < Q; i++) { array<int, 4> s; cin >> s[0] >> s[1] >> s[2] >> s[3]; /*auto usehack = [&](){ if (ch > fg*S) cg -= ch-fg*S; else fg--; }; auto useserv = [&]() { if (cg > fh*S) ch -= cg-fh*S; else fh--; };*/ function<void(array<int, 4>)> calc = [&](array<int, 4> in) { if (dp.count(in)) return; dp.insert({in, 1}); if (in[0] <= 0) {dp[in] = 0; return;} if (in[0] > in[3]*S) { array<int, 4> a = {in[0], in[1], in[2]-in[0]+in[3]*S, in[3]}; if (a[2] <= 0) return; a[1]--; calc(a); if (dp[a] == 0) dp[in] = 0; a[1]++; if (a[2] > a[1]*S) { a[0] -= a[2]-a[1]*S; calc(a); if (dp[a] == 0) dp[in] = 0; } } array<int, 4> b = {in[0], in[1], in[2], in[3]-1}; b[1]--; calc(b); if (dp[b] == 0) dp[in] = 0; b[1]++; if (b[2] > b[1]*S) { b[0] -= b[2]-b[1]*S; calc(b); if (dp[b]) dp[in] = 0; } }; calc(s); cout << (dp[s] ? "YES" : "NO") << "\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...