Submission #284732

#TimeUsernameProblemLanguageResultExecution timeMemory
284732rama_pangBroken Device (JOI17_broken_device)C++14
100 / 100
52 ms3584 KiB
#include "Annalib.h" #include <bits/stdc++.h> using namespace std; void Anna(int N, long long X, int K, int P[]) { vector<int> broken(N); for (int i = 0; i < K; i++) { broken[P[i]] = 1; } vector<int> bits; for (int i = 0; i < 61; i++) { bits.emplace_back(!!(X & (1ll << i))); } // 100 -> "0" // 001 -> "1" // 110 -> "1" // 010 -> "00" // 011 -> "01" // 101 -> "10" // 111 -> "11" vector<int> ans(N); for (int i = 0, j = 0; i < N && j < 60; i += 3) { int cnt = broken[i] + broken[i + 1] + broken[i + 2]; if (cnt == 0) { if (bits[j] == 0 && bits[j + 1] == 0) { ans[i] = 0; ans[i + 1] = 1; ans[i + 2] = 0; } else if (bits[j] == 0 && bits[j + 1] == 1) { ans[i] = 0; ans[i + 1] = 1; ans[i + 2] = 1; } else if (bits[j] == 1 && bits[j + 1] == 0) { ans[i] = 1; ans[i + 1] = 0; ans[i + 2] = 1; } else if (bits[j] == 1 && bits[j + 1] == 1) { ans[i] = 1; ans[i + 1] = 1; ans[i + 2] = 1; } j += 2; } else if (cnt == 1) { if (bits[j] == 0) { if (!broken[i]) { ans[i] = 1; ans[i + 1] = 0; ans[i + 2] = 0; j += 1; } else { if (bits[j + 1] == 0) { ans[i] = 0; ans[i + 1] = 1; ans[i + 2] = 0; } else if (bits[j + 1] == 1) { ans[i] = 0; ans[i + 1] = 1; ans[i + 2] = 1; } j += 2; } } else if (bits[j] == 1) { if (!broken[i + 2]) { ans[i] = 0; ans[i + 1] = 0; ans[i + 2] = 1; } else { ans[i] = 1; ans[i + 1] = 1; ans[i + 2] = 0; } j += 1; } } } for (int i = 0; i < N; i++) { Set(i, ans[i]); } }
#include "Brunolib.h" #include <bits/stdc++.h> using namespace std; long long Bruno(int N, int A[]) { // 100 -> "0" // 001 -> "1" // 110 -> "1" // 010 -> "00" // 011 -> "01" // 101 -> "10" // 111 -> "11" vector<int> bits; for (int i = 0; i < N; i += 3) { if (A[i] == 1 && A[i + 1] == 0 && A[i + 2] == 0) { bits.emplace_back(0); } else if (A[i] == 0 && A[i + 1] == 0 && A[i + 2] == 1) { bits.emplace_back(1); } else if (A[i] == 1 && A[i + 1] == 1 && A[i + 2] == 0) { bits.emplace_back(1); } else if (A[i] == 0 && A[i + 1] == 1 && A[i + 2] == 0) { bits.emplace_back(0); bits.emplace_back(0); } else if (A[i] == 0 && A[i + 1] == 1 && A[i + 2] == 1) { bits.emplace_back(0); bits.emplace_back(1); } else if (A[i] == 1 && A[i + 1] == 0 && A[i + 2] == 1) { bits.emplace_back(1); bits.emplace_back(0); } else if (A[i] == 1 && A[i + 1] == 1 && A[i + 2] == 1) { bits.emplace_back(1); bits.emplace_back(1); } } long long ans = 0; for (int i = 0; i < 60; i++) { if (bits[i]) { ans |= 1ll << i; } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...