Submission #1071113

#TimeUsernameProblemLanguageResultExecution timeMemory
1071113thinknoexitAncient Machine (JOI21_ancient_machine)C++17
0 / 100
48 ms10144 KiB
#include "Anna.h" #include<bits/stdc++.h> using namespace std; using ll = long long; namespace { int n; } void Anna(int N, vector<char> S) { n = N; for (int i = 0;i < n;i++) { int v = S[i] - 'X'; Send(!!(v & 1)); Send(!!(v & 2)); } }
#include "Bruno.h" #include<bits/stdc++.h> using namespace std; using ll = long long; namespace { int n; int a[100100]; } // namespace void play(int l, int r) { if (l > r) return; // find first x int x = -1; for (int i = l;i <= r;i++) { if (a[i] == 0) { x = i; break; } } int z = -1; // find last z for (int i = r;i >= l;i--) { if (a[i] == 2) { z = i; break; } } if (x == -1 || z == -1) { for (int i = l;i <= r;i++) Remove(i); return; } for (int i = l;i < x;i++) Remove(i); for (int i = z + 1;i <= r;i++) Remove(i); // X ..... Z // find first and last y int yl = -1, yr = -1; for (int i = x + 1;i < z;i++) { if (a[i] == 1) { yl = i; break; } } for (int i = z - 1;i > x;i--) { if (a[i] == 1) { yr = i; break; } } if (yl == -1 || yr == -1) { for (int i = x;i <= z;i++) Remove(i); return; } for (int i = x + 1;i < yl;i++) Remove(i); for (int i = yr + 1;i < z;i++) Remove(i); if (yl == yr) { Remove(yl); Remove(x), Remove(z); return; } play(yl + 1, yr - 1); Remove(yl), Remove(yr); Remove(x), Remove(z); } void Bruno(int N, int L, vector<int> A) { n = N; for (int i = 0;i < n;i++) { a[i] = A[2 * i] + 2 * A[2 * i + 1]; } play(0, n - 1); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...