10370 2024. 04. 01 14:58:37 MagyarKendeSZLG Táblajáték 2 (70 pont) cpp17 Elfogadva 70/70 3ms 4256 KiB
#include <bits/stdc++.h>

#define speed cin.tie(0); ios::sync_with_stdio(0)
#define cinv(v) for (auto& e : v) cin >> e;
#define all(v) v.begin(), v.end()
#define has(s, e) s.count(e)

using namespace std;
using ll = long long;

struct BigBase3 {
    vector<int> v;
    BigBase3() {
        v.push_back(0);
    }

    void add() {
        if (v.back() < 2) {
            v.back()++;
        } else {
            int i;
            for (i = size(v) - 1; i > -1; i--) {
                if (v[i] < 2) {
                    v[i]++;
                    break;
                } else {
                    v[i] = 0;
                }
            }
            if (i == -1) {
                v.insert(v.begin(), 1);
            }
        }
    }

    void sub() {
        if (v.back() > 0) {
            v.back()--;
        } else {
            int i;
            for (i = size(v) - 1; i > -1; i--) {
                if (v[i] > 0) {
                    v[i]--;
                    break;
                } else {
                    v[i] = 2;
                }
            }
            assert(i > -1);
        }
    }

    void div3() {
        v.pop_back();
        if (v.empty()) {
            v.push_back(0);
        }
    }

    void mul3() {
        v.push_back(0);
    }

    void print() const {
        int i = 0;
        // get rid of leading zeros
        while (i < size(v) - 1 && !v[i]) i++;
        
        for (; i < size(v); i++) {
            cout << v[i];
        }
    }
};

int main() {
    speed;

    ll K, row = 0;
    cin >> K;

    BigBase3 col;

    while (K--) {
        char m;
        cin >> m;

        if (m == '0') {
            row++;
            col.mul3();
        }
        else if (m == '1') {
            row++;
            col.mul3();
            col.add();
        }
        else if (m == '2') {
            row++;
            col.mul3();
            col.add();
            col.add();
        }
        else if (m == '3') {
            row--;
            col.div3();
        }
        else if (m == '4') {
            col.sub();
        }
        else {
            col.add();
        }
    }

    cout << row << '\n';
    col.print();
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 70/70
1 Elfogadva 0/0 3ms 1828 KiB
2 Elfogadva 0/0 3ms 2056 KiB
3 Elfogadva 2/2 3ms 2280 KiB
4 Elfogadva 3/3 3ms 2368 KiB
5 Elfogadva 3/3 3ms 2504 KiB
6 Elfogadva 3/3 3ms 2692 KiB
7 Elfogadva 3/3 3ms 2912 KiB
8 Elfogadva 3/3 3ms 2996 KiB
9 Elfogadva 3/3 3ms 2996 KiB
10 Elfogadva 3/3 3ms 3132 KiB
11 Elfogadva 3/3 3ms 3236 KiB
12 Elfogadva 3/3 3ms 3364 KiB
13 Elfogadva 3/3 2ms 3452 KiB
14 Elfogadva 3/3 2ms 3456 KiB
15 Elfogadva 4/4 2ms 3460 KiB
16 Elfogadva 4/4 3ms 3460 KiB
17 Elfogadva 4/4 3ms 3584 KiB
18 Elfogadva 4/4 3ms 3812 KiB
19 Elfogadva 4/4 3ms 3880 KiB
20 Elfogadva 4/4 3ms 4256 KiB
21 Elfogadva 4/4 3ms 4132 KiB
22 Elfogadva 4/4 3ms 4204 KiB
23 Elfogadva 3/3 3ms 4108 KiB