제출 #97563

#제출 시각아이디문제언어결과실행 시간메모리
97563silxikysBroken Device (JOI17_broken_device)C++14
0 / 100
70 ms3312 KiB
#include "Annalib.h" #include <vector> void Anna(int N, long long X, int K, int P[]) { int pos = 0; std::vector<int> ans(N,-1); for (int i = 0; i < K; i++) { ans[P[i]] = 0; } for (int i = 0; i < N; i += 3) { int cnt = (ans[i] == 0) + (ans[i+1] == 0) + (ans[i+2] == 0); if (cnt > 1 || pos > 60) { ans[i] = 0; ans[i+1] = 0; ans[i+2] = 0; } else { if ((1LL<<pos) & X) { //make it a 1 if (ans[i] == 0) { ans[i] = 0; ans[i+1] = 1; ans[i+2] = 1; } else if (ans[i+1] == 0) { ans[i] = 1; ans[i+1] = 0; ans[i+2] = 1; } else { ans[i] = 1; ans[i+1] = 1; ans[i+2] = 0; } } else { //make it a 0 if (ans[i] == 0) { ans[i] = 0; ans[i+1] = 1; ans[i+2] = 0; } else if (ans[i+1] == 0) { ans[i] = 0; ans[i+1] = 0; ans[i+2] = 1; } else { ans[i] = 1; ans[i+1] = 0; ans[i+2] = 0; } } pos++; } } for (int i = 0; i < N; i++) { //assert(ans[i] == 0 || ans[i] == 1); Set(i,ans[i]); } }
#include "Brunolib.h" long long Bruno(int N, int A[]) { long long ans = 0; long long mult = 1; for (int i = 0; i < N; i += 3) { int r = A[i]*4 + A[i+1]*2 + A[i+2]; if (r == 0) continue; else if (r == 3 || r == 5 || r == 6) { ans += mult; } mult *= 2; } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...