제출 #1165097

#제출 시각아이디문제언어결과실행 시간메모리
1165097SangBroken Device (JOI17_broken_device)C++20
8 / 100
20 ms1520 KiB
#include "Annalib.h" #include<bits/stdc++.h> using namespace std; #define FOR(i, a, b) for (int i = (a), _b = (b); i <= _b; i++) #define FORD(i, a, b) for (int i = (a), _b = (b); i >= _b; i--) #define fi first #define se second #define pb push_back #define ALL(a) (a).begin(), (a).end() #define task "kbsiudthw" typedef vector<int> vi; typedef pair<int, int> ii; typedef pair<int, ii> pii; void Anna(int n, long long x, int K, int P[]){ vector<int> bit, marked(n, 0); FOR (i, 0, 60) bit.pb((x>>i)&1); reverse(ALL(bit)); FOR (i, 1, K){ marked[P[i-1]] = 1; } for (int i = 0; i < n; i += 3){ if (marked[i] + marked[i+1] + marked[i+2] > 1 || bit.empty()){ Set(i, 0); Set(i+1, 0); Set(i+2, 1); continue; } vi a; a.pb(bit.back()); bit.pop_back(); if (marked[i] + marked[i+1] + marked[i+2] == 0 && !bit.empty()) a.pb(bit.back()), bit.pop_back(); if (a.size() == 2){ if (!a[0] && !a[1]){ Set(i, 0); Set(i+1, 0); Set(i+2, 0); } if (a[0] && !a[1]){ Set(i, 1); Set(i+1, 1); Set(i+2, 0); } if (!a[0] && a[1]){ Set(i, 1); Set(i+1, 0); Set(i+2, 0); } if (a[0] && a[1]){ Set(i, 1); Set(i+1, 1); Set(i+2, 1); } } else { if (a[0]) { Set(i, marked[i+1]); Set(i+1, marked[i+1]^1); Set(i+2, marked[i+1]); } else { if (bit.empty() || bit.back() == 0){ Set(i, 0); Set(i+1, 0); Set(i+2, 0); if (!bit.empty()) bit.pop_back(); continue; } if (marked[i]){ Set(i, 0); Set(i+1, 1); Set(i+2, 1); } else { Set(i, 1); Set(i+1, 0); Set(i+2, 0); } bit.pop_back(); } } } }
#include "Brunolib.h" #include<bits/stdc++.h> using namespace std; #define FOR(i, a, b) for (int i = (a), _b = (b); i <= _b; i++) #define FORD(i, a, b) for (int i = (a), _b = (b); i >= _b; i--) #define fi first #define se second #define pb push_back #define ALL(a) (a).begin(), (a).end() #define task "kbsiudthw" typedef vector<int> vi; typedef pair<int, int> ii; typedef pair<int, ii> pii; long long Bruno(int n, int A[]){ long long ans = 0, cur = 0; for (int i = 0; i < n; i += 3){ array<int, 3> a = {A[i], A[i+1], A[i+2]}; if (!a[0] && !a[1] && a[2]) continue; cur = min(cur, 61ll); if (!a[0] && !a[1] && !a[2]){ cur += 2; continue; } if (a[0] && a[1] && !a[2]){ ans += (1ll<<cur); cur += 2; continue; } if ((a[0] && !a[1] && !a[2]) || (!a[0] && a[1] && a[2])){ ans += (1ll<<(cur + 1)); cur += 2; continue; } if (a[0] & a[1] & a[2]){ ans += (1ll<<cur); ans += (1ll<<(cur+1)); cur += 2; continue; } ans += (1ll<<cur); ++cur; } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...