제출 #1219753

#제출 시각아이디문제언어결과실행 시간메모리
1219753peraBroken Device (JOI17_broken_device)C++20
100 / 100
19 ms1588 KiB
#include "Annalib.h" #include <bits/stdc++.h> using namespace std; void Anna( int N, long long X, int K, int P[] ){ vector<int> mark(N); for(int i = 0;i < K;i ++){ mark[P[i]] = 1; } for(int i = 0;i < N;i += 3){ int c = mark[i] + mark[i + 1] + mark[i + 2]; if(c >= 2){ Set(i , 0); Set(i + 1 , 0); Set(i + 2 , 0); continue; } int bit = X % 2; int nbit = (X / 2) % 2; if(c == 0){ if(bit && nbit){ Set(i , 1); Set(i + 1 , 1); Set(i + 2 , 1); }else if(bit && !nbit){ Set(i , 1); Set(i + 1 , 0); Set(i + 2 , 1); }else if(!bit && nbit){ Set(i , 0); Set(i + 1 , 1); Set(i + 2 , 0); }else{ Set(i , 0); Set(i + 1 , 1); Set(i + 2 , 1); } X /= 2; X /= 2; }else{ if(bit){ if(mark[i + 2]){ Set(i , 1); Set(i + 1 , 1); Set(i + 2 , 0); }else{ Set(i , 0); Set(i + 1 , 0); Set(i + 2 , 1); } X /= 2; }else{ if(!mark[i]){ Set(i , 1); Set(i + 1 , 0); Set(i + 2 , 0); }else{ if(nbit){ Set(i , 0); Set(i + 1 , 1); Set(i + 2 , 0); }else{ Set(i , 0); Set(i + 1 , 1); Set(i + 2 , 1); } X /= 2; } X /= 2; } } } }
#include "Brunolib.h" #include <bits/stdc++.h> using namespace std; long long Bruno( int N, int A[] ){ long long ans = 0; int bit = 0; for(int i = 0;i < N;i += 3){ if(A[i] + A[i + 1] + A[i + 2] == 0){ continue; } if(A[i] && A[i + 1] && !A[i + 2]){ ans += (1LL << bit); bit += 1; }else if(!A[i] && !A[i + 1] && A[i + 2]){ ans += (1LL << bit); bit += 1; }else if(A[i] && A[i + 1] && A[i + 2]){ ans += (1LL << bit); ans += (1LL << (bit + 1)); bit += 2; }else if(A[i] && !A[i + 1] && !A[i + 2]){ bit += 1; }else if(A[i] && !A[i + 1] && A[i + 2]){ ans += (1LL << bit); bit += 2; }else if(!A[i] && A[i + 1] && !A[i + 2]){ ans += (1LL << (bit + 1)); bit += 2; }else{ bit += 2; } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...