제출 #1338871

#제출 시각아이디문제언어결과실행 시간메모리
1338871MisterReaperBroken Device 2 (JOI22_device2)C++20
80 / 100
38 ms2248 KiB
#include "Anna.h"
#include <bits/stdc++.h>

using i64 = long long;

namespace {

#ifdef DEBUG
    #include "/home/ahmetalp/Desktop/Workplace/debug.h"
#else
    #define debug(...) void(23)
#endif

};

int Declare() {
    return 181;
}

std::pair<std::vector<int>, std::vector<int>> Anna(i64 A) {
    --A;
    i64 x = A;
    std::vector<int> bits;
    for (int i = 0; i < 60; ++i) {
        bits.emplace_back(x % 2);
        x /= 2;
    }
    std::reverse(bits.begin(), bits.end());
    std::vector<int> s;
    std::vector<int> t;
    int b = 1;
    s.emplace_back(b);
    for (int i = 0; i < 60; ++i) {
        int cnt;
        if (b == bits[i]) {
            cnt = 2;
        } else {
            cnt = 3;
        }
        for (int j = 0; j < cnt; ++j) {
            s.emplace_back(bits[i]);
        }
        b = bits[i];
    }
    for (int i = 0; i < int(s.size()); ++i) {
        t.emplace_back(1 - i % 2);
    }
    return {s, t};
}
#include "Bruno.h"
#include <bits/stdc++.h>

using i64 = long long;

namespace {

#ifdef DEBUG
    #include "/home/ahmetalp/Desktop/Workplace/debug.h"
#else
    #define debug(...) void(23)
#endif

};

i64 Bruno(std::vector<int> u) {
    std::vector<int> bits;
    int b = 1;
    int sum = +1;
    for (int i = 1; i < int(u.size()); ++i) {
        sum += u[i] ? +1 : -1;
        if (b == 1) {
            if (sum == +3) {
                bits.emplace_back(1);
                b = 1;
                sum = +1;
            } else if (sum == -1) {
                bits.emplace_back(0);
                b = 0;
                sum = 0;
            }
        } else {
            if (sum == +2) {
                bits.emplace_back(1);
                b = 1;
                sum = +1;
            } else if (sum == -2) {
                bits.emplace_back(0);
                b = 0;
                sum = 0;
            }
        }
    }
    assert(bits.size() == 60);
    i64 A = 0;
    for (auto i : bits) {
        A = 2 * A + i;
    }
    return A + 1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...