1883 2022. 12. 06 23:53:53 TomaSajt Táblajáték cpp17 Elfogadva 50/50 3ms 3704 KiB
#include <bits/stdc++.h>
#define speed ios::sync_with_stdio(0);cin.tie(0)
using namespace std;

typedef bitset<501> num;
num neg1(0), pos1(1);

num mult2(const num& inp) {
    num res;
    for (int i = 0; i < 500; i++) {
        res[i + 1] = inp[i];
    }
    return res;
}

num div2(const num& inp) {
    num res;
    for (int i = 0; i < 500; i++) {
        res[i] = inp[i + 1];
    }
    return res;
}

num add(const num& a, const num& b) {
    num res;
    for (int i = 0, cry = 0; i <= 500; i++) {
        int d = cry + a[i] + b[i];
        res[i] = d % 2;
        cry = (d / 2);
    }
    return res;
}

int main() {
    speed;
    for (int i = 0; i <= 500; i++) neg1[i] = 1;
    num a;
    int r = 0;
    int n; cin >> n;
    while (n--) {
        int o; cin >> o;
        if (o == 0) a = mult2(a), r++;
        else if (o == 1) a = add(mult2(a), pos1), r++;
        else if (o == 2) a = div2(a), r--;
        else if (o == 3) a = add(a, neg1);
        else if (o == 4) a = add(a, pos1);
    }
    cout << r << endl;
    int i = 500;
    for (; i >= 0 && !a[i]; i--);
    if (i == -1) cout << 0;
    for (; i >= 0; i--) cout << a[i];
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 3ms 1892 KiB
2 Elfogadva 0/0 2ms 2116 KiB
3 Elfogadva 3/3 2ms 2316 KiB
4 Elfogadva 3/3 2ms 2552 KiB
5 Elfogadva 3/3 2ms 2724 KiB
6 Elfogadva 3/3 2ms 2948 KiB
7 Elfogadva 3/3 2ms 3032 KiB
8 Elfogadva 3/3 2ms 3028 KiB
9 Elfogadva 3/3 2ms 3264 KiB
10 Elfogadva 3/3 3ms 3340 KiB
11 Elfogadva 3/3 2ms 3444 KiB
12 Elfogadva 3/3 3ms 3680 KiB
13 Elfogadva 4/4 2ms 3544 KiB
14 Elfogadva 4/4 3ms 3540 KiB
15 Elfogadva 4/4 2ms 3500 KiB
16 Elfogadva 4/4 3ms 3628 KiB
17 Elfogadva 4/4 2ms 3704 KiB