103702024-04-01 14:58:37MagyarKendeSZLGTáblajáték 2 (70 pont)cpp17Elfogadva 70/703ms4256 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ÖsszpontTesztVerdiktIdőMemória
base70/70
1Elfogadva0/03ms1828 KiB
2Elfogadva0/03ms2056 KiB
3Elfogadva2/23ms2280 KiB
4Elfogadva3/33ms2368 KiB
5Elfogadva3/33ms2504 KiB
6Elfogadva3/33ms2692 KiB
7Elfogadva3/33ms2912 KiB
8Elfogadva3/33ms2996 KiB
9Elfogadva3/33ms2996 KiB
10Elfogadva3/33ms3132 KiB
11Elfogadva3/33ms3236 KiB
12Elfogadva3/33ms3364 KiB
13Elfogadva3/32ms3452 KiB
14Elfogadva3/32ms3456 KiB
15Elfogadva4/42ms3460 KiB
16Elfogadva4/43ms3460 KiB
17Elfogadva4/43ms3584 KiB
18Elfogadva4/43ms3812 KiB
19Elfogadva4/43ms3880 KiB
20Elfogadva4/43ms4256 KiB
21Elfogadva4/43ms4132 KiB
22Elfogadva4/43ms4204 KiB
23Elfogadva3/33ms4108 KiB