제출 #1239931

#제출 시각아이디문제언어결과실행 시간메모리
1239931SpyrosAlivBroken Device (JOI17_broken_device)C++20
0 / 100
0 ms320 KiB
#include "Annalib.h" #include <bits/stdc++.h> using namespace std; #define ll long long const int BITS = 61; void Anna(int N, long long X, int K, int P[]){ int n = N; ll x = X; int k = K; vector<bool> ok(n, true); for (int i = 0; i < k; i++) { ok[P[i]] = false; } int curr = 0; for (int i = 0; i < BITS; i++) { int send = ((x >> i) & 1); if (send == 1) { while (!ok[curr]) { assert(curr >= 0 && curr < n); Set(curr, 0); curr++; } assert(curr >= 0 && curr < n); Set(curr, 1); if (curr < n-1) { assert(curr + 1 >= 0 && curr + 1 < n); Set(curr+1, 0); } curr+=2; continue; } else { while (!ok[curr] || !ok[curr+1]) { assert(curr >= 0 && curr < n); Set(curr, 0); curr++; } assert(curr >= 0 && curr < n); Set(curr, 1); assert(curr + 1>= 0 && curr + 1< n); Set(curr+1, 1); curr += 2; } } while (curr < n) { assert(curr >= 0 && curr < n); Set(curr, 0); curr++; } }
#include "Brunolib.h" #include <bits/stdc++.h> using namespace std; #define ll long long const int BITS = 61; long long Bruno(int N, int A[]){ ll x = 0; vector<bool> sendOn(BITS, false); int n = N; int curr = 0; for (int i = 0; i < n-1; i++) { if (A[i] && A[i+1]) { sendOn[curr] = false; curr+=2; } else if (A[i]) { sendOn[curr] = true; curr++; } } for (int i = 0; i < BITS; i++) { if (sendOn[i]) { x |= (1LL << i); } } return x; }
#Verdict Execution timeMemoryGrader output
Fetching results...