Submission #1262277

#TimeUsernameProblemLanguageResultExecution timeMemory
1262277inkvizytorBroken Device (JOI17_broken_device)C++20
0 / 100
0 ms320 KiB
#include "Annalib.h"
#include <bits/stdc++.h>
using namespace std;

void ustaw(vector<int> v, int i) {
    Set(i, v[0]), Set(i+1, v[1]), Set(i+2, v[2]);
}

void Anna(int N, long long X, int K, int P[] ){
    int s = 0;
    vector<int> a (N+2, 0);
    for (int i = 0; i < K; i++) {
        a[P[i]]=1;
    }
    for (int i = 0; i < N; i+=3) {
        int l = a[i]+a[i+1]+a[i+2];
        if (l >= 2) {
            ustaw({0, 0, 0}, i);
            return;
        }
        else if (a[i]) {
            if (X&(1<<s)) {
                ustaw({0, 1, 0}, i);
                s++;
            }
            else {
                if (X&(1<<(s+1))) {
                    ustaw({0, 1, 1}, i);
                    s+=2;
                } 
                else {
                    ustaw({0, 0, 1}, i);
                    s+=2;
                }
            }
        }
        else if (a[i+1]) {
            if (X&(1<<s)) {
                ustaw({1, 0, 1}, i);
                s++;
            }
            else {
                ustaw({1, 0, 0}, i);
                s++;
            }
        }
        else if (a[i+2]) {
            if (X&(1<<s)) {
                ustaw({0, 1, 0}, i);
                s++;
            }
            else {
                ustaw({1, 0, 0}, i);
                s++;
            }
        }
        else {
            if (X&(1<<s)) {
                if (X&(1<<(s+1))) {
                    ustaw({1, 1, 1}, i);
                    s+=2;
                } 
                else {
                    ustaw({1, 1, 0}, i);
                    s+=2;
                }
            }
            else {
                if (X&(1<<(s+1))) {
                    ustaw({0, 1, 1}, i);
                    s+=2;
                } 
                else {
                    ustaw({0, 0, 1}, i);
                    s+=2;
                }
            }
        }
    }
}
#include "Brunolib.h"
#include <bits/stdc++.h>
using namespace std;

#define ll long long

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