Submission #334039

#TimeUsernameProblemLanguageResultExecution timeMemory
334039dolphingarlicBroken Device (JOI17_broken_device)C++14
0 / 100
51 ms3096 KiB
#include "Annalib.h"

void Anna(int N, long long X, int K, int P[]) {
    bool broken[150];
    for (int i = 0; i < N; i++) broken[i] = false;
    for (int i = 0; i < K; i++) broken[P[i]] = true;

    for (int i = 0, j = 0; i < N; i += 3) {
        if (broken[i] + broken[i + 1] + broken[i + 2] > 1 || j > 60) {
            Set(i, 0);
            Set(i + 1, 0);
            Set(i + 2, 0);
        } else {
            if (X & (1 << j)) {
                for (int k = i, cnt = 0; k < i + 3; k++) {
                    if (!broken[k] && cnt++ < 2) Set(k, 1);
                    else Set(k, 0);
                }
            } else {
                for (int k = i, cnt = 0; k < i + 3; k++) {
                    if (!broken[k] && cnt++ < 1) Set(k, 1);
                    else Set(k, 0);
                }
            }
            j++;
        }
    }
}
#include "Brunolib.h"

long long Bruno(int N, int A[]) {
    long long ans = 0;
    for (int i = 0, j = 0; i < N; i += 3) {
        int cnt = A[i] + A[i + 1] + A[i + 2];
        if (!cnt) continue;
        ans += (cnt == 2) * (1 << j);
        j++;
    }
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...