| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 1165097 | Sang | Broken Device (JOI17_broken_device) | C++20 | 20 ms | 1520 KiB | 
#include "Annalib.h"
#include<bits/stdc++.h>
using namespace std;
#define FOR(i, a, b) for (int i = (a), _b = (b); i <= _b; i++)
#define FORD(i, a, b) for (int i = (a), _b = (b); i >= _b; i--)
#define fi first
#define se second
#define pb push_back
#define ALL(a) (a).begin(), (a).end()
#define task "kbsiudthw"
typedef vector<int> vi;
typedef pair<int, int> ii;
typedef pair<int, ii> pii;
void Anna(int n, long long x, int K, int P[]){
    vector<int> bit, marked(n, 0);
    FOR (i, 0, 60) bit.pb((x>>i)&1);
    reverse(ALL(bit));
    FOR (i, 1, K){
        marked[P[i-1]] = 1;
    }
    for (int i = 0; i < n; i += 3){
        if (marked[i] + marked[i+1] + marked[i+2] > 1 || bit.empty()){
            Set(i, 0); Set(i+1, 0); Set(i+2, 1);
            continue;
        }
        vi a;
        a.pb(bit.back()); bit.pop_back();
        if (marked[i] + marked[i+1] + marked[i+2] == 0 && !bit.empty()) a.pb(bit.back()), bit.pop_back();
        if (a.size() == 2){
            if (!a[0] && !a[1]){
                Set(i, 0); Set(i+1, 0); Set(i+2, 0);
            }
            if (a[0] && !a[1]){
                Set(i, 1); Set(i+1, 1); Set(i+2, 0);
            }
            if (!a[0] && a[1]){
                Set(i, 1); Set(i+1, 0); Set(i+2, 0);
            }
            if (a[0] && a[1]){
                Set(i, 1); Set(i+1, 1); Set(i+2, 1);
            }
        } else {
            if (a[0]) {
                Set(i, marked[i+1]); Set(i+1, marked[i+1]^1); Set(i+2, marked[i+1]);
            } else {
                if (bit.empty() || bit.back() == 0){
                    Set(i, 0); Set(i+1, 0); Set(i+2, 0);
                    if (!bit.empty()) bit.pop_back();
                    continue;
                }
                if (marked[i]){
                    Set(i, 0); Set(i+1, 1); Set(i+2, 1);
                } else {
                    Set(i, 1); Set(i+1, 0); Set(i+2, 0);
                }
                bit.pop_back();
            }
        }
    }
}
#include "Brunolib.h"
#include<bits/stdc++.h>
using namespace std;
#define FOR(i, a, b) for (int i = (a), _b = (b); i <= _b; i++)
#define FORD(i, a, b) for (int i = (a), _b = (b); i >= _b; i--)
#define fi first
#define se second
#define pb push_back
#define ALL(a) (a).begin(), (a).end()
#define task "kbsiudthw"
typedef vector<int> vi;
typedef pair<int, int> ii;
typedef pair<int, ii> pii;
long long Bruno(int n, int A[]){
    long long ans = 0, cur = 0;
    for (int i = 0; i < n; i += 3){
        array<int, 3> a = {A[i], A[i+1], A[i+2]};
        if (!a[0] && !a[1] && a[2]) continue;
        cur = min(cur, 61ll);
        if (!a[0] && !a[1] && !a[2]){
            cur += 2;
            continue;
        }
        if (a[0] && a[1] && !a[2]){
            ans += (1ll<<cur);
            cur += 2;
            continue;
        }
        if ((a[0] && !a[1] && !a[2]) || (!a[0] && a[1] && a[2])){
            ans += (1ll<<(cur + 1));
            cur += 2;
            continue;
        }
        if (a[0] & a[1] & a[2]){
            ans += (1ll<<cur);
            ans += (1ll<<(cur+1));
            cur += 2;
            continue;
        }
        ans += (1ll<<cur);
        ++cur;
    }
    return ans;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
