Submission #115894

#TimeUsernameProblemLanguageResultExecution timeMemory
115894aminraBroken Device (JOI17_broken_device)C++14
100 / 100
74 ms3312 KiB
#include "Annalib.h" #include <bits/stdc++.h> using namespace std; void Anna( int N, long long X, int K, int P[] ){ vector <int> arr(N); int i; for(i = 0; i < K; i++) { arr[P[i]] = 1; } vector <int> sol(N, 0); for(int i = 0; i < N; i += 3) { int a = arr[i], b = arr[i + 1], c = arr[i + 2]; if(a + b + c > 1) { continue; } if(a + b + c == 0) { if((X & 3) == 0) { sol[i] = 1; } else if((X & 3) == 2) { sol[i] = sol[i + 2] = 1; } else if((X & 3) == 1) { sol[i + 1] = sol[i + 2] = 1; } else if((X & 3) == 3) { sol[i] = sol[i + 1] = sol[i + 2] = 1; } X >>= 2; } else { if(b == 0) { if(X & 1) { if(c == 0) { sol[i + 2] = 1; } else { sol[i] = sol[i + 1] = 1; } } else { sol[i + 1] = 1; } X >>= 1; } else { if(X & 1) { sol[i + 2] = 1; X >>= 1; } else { if((X & 3) == 0) { sol[i] = 1; } else if((X & 3) == 2) { sol[i] = sol[i + 2] = 1; } X >>= 2; } } } } for(i = 0; i < N; i++) { Set(i, sol[i]); } }
#include <bits/stdc++.h> #include "Annalib.h" using namespace std; typedef long long ll; typedef long double ld; const int MOD = (int)1e9 + 7; const int MAXN = (int)153; const int infint = (int)1e9 + 3; const ll inf = (ll)1e18; ll Bruno(int N, int A[]) { ll ans = 0; for (int i = N - 3; i >= 0; i -= 3) if(A[i] == 0 && A[i + 1] == 0 && A[i + 2] == 0) continue; else if(A[i] == 1 && A[i + 1] == 0 && A[i + 2] == 0) ans = 1LL * ans * 4; else if(A[i] == 0 && A[i + 1] == 1 && A[i + 2] == 1) ans = 1LL * ans * 4 + 1; else if(A[i] == 1 && A[i + 1] == 0 && A[i + 2] == 1) ans = 1LL * ans * 4 + 2; else if(A[i] == 1 && A[i + 1] == 1 && A[i + 2] == 1) ans = 1LL * ans * 4 + 3; else if(A[i] == 0 && A[i + 1] == 0 && A[i + 2] == 1) ans = 1LL * ans * 2 + 1; else if(A[i] == 0 && A[i + 1] == 1 && A[i + 2] == 0) ans = 1LL * ans * 2; else ans = 1LL * ans * 2 + 1; return ans; } /*int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); }*/
#Verdict Execution timeMemoryGrader output
Fetching results...