Submission #97563

#TimeUsernameProblemLanguageResultExecution timeMemory
97563silxikysBroken Device (JOI17_broken_device)C++14
0 / 100
70 ms3312 KiB
#include "Annalib.h"
#include <vector>

void Anna(int N, long long X, int K, int P[]) {
    int pos = 0;
    std::vector<int> ans(N,-1);
    for (int i = 0; i < K; i++) {
        ans[P[i]] = 0;
    }
    for (int i = 0; i < N; i += 3) {
        int cnt = (ans[i] == 0) + (ans[i+1] == 0) + (ans[i+2] == 0);
        if (cnt > 1 || pos > 60) {
            ans[i] = 0;
            ans[i+1] = 0;
            ans[i+2] = 0;
        }
        else {
            if ((1LL<<pos) & X) {
                //make it a 1
                if (ans[i] == 0) {
                    ans[i] = 0;
                    ans[i+1] = 1;
                    ans[i+2] = 1;
                }
                else if (ans[i+1] == 0) {
                    ans[i] = 1;
                    ans[i+1] = 0;
                    ans[i+2] = 1;
                }
                else {
                    ans[i] = 1;
                    ans[i+1] = 1;
                    ans[i+2] = 0;
                }
            }
            else {
                //make it a 0
                if (ans[i] == 0) {
                    ans[i] = 0;
                    ans[i+1] = 1;
                    ans[i+2] = 0;
                }
                else if (ans[i+1] == 0) {
                    ans[i] = 0;
                    ans[i+1] = 0;
                    ans[i+2] = 1;
                }
                else {
                    ans[i] = 1;
                    ans[i+1] = 0;
                    ans[i+2] = 0;
                }
            }
            pos++;
        }
    }
    for (int i = 0; i < N; i++) {
        //assert(ans[i] == 0 || ans[i] == 1);
        Set(i,ans[i]);            
    }
}
#include "Brunolib.h"

long long Bruno(int N, int A[]) {
    long long ans = 0;
    long long mult = 1;
    for (int i = 0; i < N; i += 3) {
        int r = A[i]*4 + A[i+1]*2 + A[i+2];
        if (r == 0) continue;
        else if (r == 3 || r == 5 || r == 6) {
            ans += mult;            
        }
        mult *= 2;
    }
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...