제출 #26829

#제출 시각아이디문제언어결과실행 시간메모리
26829wangyenjenBroken Device (JOI17_broken_device)C++14
0 / 100
0 ms4636 KiB
/// Author: Wang, Yen-Jen
#include "Annalib.h"
#include <bits/stdc++.h>

using namespace std;

static bool st[150];
static int cnt[30];

void Anna(int N , long long X , int K , int P[]) {
    memset(st , 0 , sizeof(st));
    memset(cnt , 0 , sizeof(cnt));
    for(int i = 0; i < K; i++) {
        st[P[i]] = 1;
        cnt[P[i] / 3]++;
    }
    int cc = 0;
    for(int i = 0; i < N / 3; i++) {
        if(cnt[i] >= 2 || cc >= 60) {
            Set(i * 3 , 0);
            Set(i * 3 + 1 , 0);
            Set(i * 3 + 2 , 0);
            continue;
        }
        if(cnt[i] == 0) {
            Set(i * 3 , 1);
            Set(i * 3 + 1 , (X>>cc)&1);
            cc++;
            Set(i * 3 + 2 , (X>>cc)&1);
            cc++;
        }
        else {
            if(st[i * 3]) {
                Set(i * 3 + 1 , 1);
                Set(i * 3 + 2 , (X>>cc)&1);
                cc++;
            }
            else if(st[i * 3 + 1]) {
                if(~(X>>cc)&1) {
                    Set(i * 3 , 1);
                    Set(i * 3 + 1 , (X>>cc)&1);
                    cc++;
                    Set(i * 3 + 2 , (X>>cc)&1);
                    cc++;
                }
                else {
                    Set(i * 3 , 0);
                    Set(i * 3 + 1 , 0);
                    Set(i * 3 + 2 , 0);
                }
            }
            else {
                if(~(X>>(cc + 1))&1) {
                    Set(i * 3 , 1);
                    Set(i * 3 + 1 , (X>>cc)&1);
                    cc++;
                    Set(i * 3 + 2 , (X>>cc)&1);
                    cc++;
                }
                else {
                    Set(i * 3 , 0);
                    Set(i * 3 + 1 , 0);
                    Set(i * 3 + 2 , 0);
                }
            }
        }
    }
}
/// Author: Wang, Yen-Jen
#include "Brunolib.h"
#include <bits/stdc++.h>

using namespace std;

long long Bruno(int N , int A[]) {
    long long X = 0;
    int cc = 0;
    for(int i = 0; i < N / 3; i++) {
        if(A[i * 3]) {
            X |= ((long long)A[i * 3 + 1]<<cc);
            cc++;
            X |= ((long long)A[i * 3 + 2]<<cc);
            cc++;
        }
        else if(A[i * 3 + 1]) {
            X |= ((long long)A[i * 3 + 2]<<cc);
            cc++;
        }
    }
    return X;
}
#Verdict Execution timeMemoryGrader output
Fetching results...