제출 #1219756

#제출 시각아이디문제언어결과실행 시간메모리
1219756BulaBroken Device (JOI17_broken_device)C++20
100 / 100
20 ms1552 KiB
#include "Annalib.h" #include <bits/stdc++.h> using namespace std; void Anna(int N, long long X, int K, int P[]){ vector<int> vis(N), p(N); for(int i = 0; i < K; i++) vis[P[i]] = 1; for(int i = 0; i < N; i += 3){ int cnt = vis[i] + vis[i + 1] + vis[i + 2]; if(cnt >= 2) continue; int a = (X % 2), b = (X / 2) % 2; if(cnt == 0){ if(a && b){ p[i] = 1; p[i + 1] = 1; p[i + 2] = 1; }else if(a && !b){ p[i] = 1; p[i + 2] = 1; }else if(!a && b){ p[i + 1] = 1; p[i + 2] = 1; }else{ p[i + 1] = 1; } X /= 4; } if(cnt == 1){ if(a){ if(vis[i + 2]){ p[i] = 1; p[i + 1] = 1; }else{ p[i + 2] = 1; } X /= 2; }else{ if(!vis[i]){ p[i] = 1; X /= 2; }else{ p[i + 1] = 1; if(b){ p[i + 2] = 1; } X /= 4; } } } } for(int i = 0; i < N; i++) Set(i, p[i]); } //1 1 1 - 1 1 //1 1 0 - 1 //0 0 1 - 1 //1 0 1 - 1 0 //0 1 1 - 0 1 //1 0 0 - 0 //0 1 0 - 0 0
#include "Brunolib.h" #include <bits/stdc++.h> using namespace std; long long Bruno(int N, int A[]){ long long ans = 0, cur = 1; for(int i = 0; i < N; i += 3){ if(!A[i] && !A[i + 1] && !A[i + 2]) continue; if(A[i] && A[i + 1] && A[i + 2]){ ans |= cur; cur *= 2; ans |= cur; cur *= 2; }else if(A[i] && A[i + 1]){ ans |= cur; cur *= 2; }else if(A[i] && A[i + 2]){ ans |= cur; cur *= 4; }else if(A[i + 1] && A[i + 2]){ cur *= 2; ans |= cur; cur *= 2; }else if(A[i]){ cur *= 2; }else if(A[i + 1]){ cur *= 4; }else{ ans |= cur; cur *= 2; } } return ans; } //1 1 1 - 1 1 //1 1 0 - 1 //0 0 1 - 1 //1 0 1 - 1 0 //0 1 1 - 0 1 //1 0 0 - 0 //0 1 0 - 0 0
#Verdict Execution timeMemoryGrader output
Fetching results...