제출 #1219743

#제출 시각아이디문제언어결과실행 시간메모리
1219743BulaBroken Device (JOI17_broken_device)C++20
0 / 100
19 ms1344 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;
        if(cnt == 0){
            int a = X % 2;
            X /= 2;
            int b = X % 2;
            X /= 2;
            if(!a && b){
                p[i] = 1; p[i + 1] = 1; p[i + 2] = 1;
            }else if(a && !b){
                p[i] = 1; p[i + 1] = 1;
            }else if(a && b){
                p[i] = 1; p[i + 2] = 1;
            }else{
                p[i + 1] = 1; p[i + 2] = 1;
            }
        }
        if(cnt == 1){
            string t = "10";
            if(X % 2 == 0) t = "01";
            for(int j = i; j < i + 3; j++){
                if(!vis[j]){
                    p[j] = t[0] - '0';
                    t.erase(t.begin());
                }
            }
            X /= 2;
        }
    }
    for(int i = 0; i < N; i++) Set(i, p[i]);
}
#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] == 0 && A[i + 1] == 0 && A[i + 2] == 0) continue;
        if(A[i] == 1 && A[i + 1] == 1 && A[i + 2] == 1){
            cur *= 2;
            ans |= cur;
            cur *= 2;   
        }else if(A[i] == 1 && A[i + 1] == 1){
            ans |= cur;
            cur *= 4;
        }else if(A[i] == 1 && A[i + 2] == 1){
            ans |= cur;
            cur *= 2;
            ans |= cur;
            cur *= 2;  
        }else if(A[i + 1] == 1 && A[i + 2] == 1){
            cur *= 4;
        }else if((A[i] == 1 && A[i + 2] == 0) || (A[i + 1] == 1 && A[i + 2] == 0)){
            ans |= cur;
            cur *= 2;
        }else{
            cur *= 2;
        }
    }
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...