150952025-02-12 19:21:34zhuyiTáblajáték 2 (70 pont)cpp17Partially correct 68/701ms508 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
void add(string &s)
{
    int l = s.size() - 1;
    while(s[l] == '2' && l >= 0){
        s[l] = '0';
        l--;
    }
    if(l == -1) s = '1' + s;
    else{
        if(s[l] == '1') s[l] = '2';
        else s[l] = '1';
    }
}

void take(string &s)
{
    int l = s.size() - 1;
    string cop = "";
    while(s[l] == '0' && l > 0){
        s[l] = '2';
        cop += '2';
        l--;
    }
    if(l == 0) s = cop;
    else{
        if(s[l] == '2') s[l] = '1';
        else s[l] = '0';
    }
}
int main()
{
    int n; cin >> n;
    vector <int> S(n);
    for(int i = 0; i < n; i++) cin >> S[i];
    ll ans = 0;
    string trinary = "0";
    for(int i = 0; i < n; i++){
        if(S[i] < 3) ans++;
        else if(S[i] == 3) ans--;
    }
    for(int i = 0; i < n; i++){
        if(S[i] == 0) trinary += '0';
        else if(S[i] == 1) trinary += '1';
        else if(S[i] == 2 ) trinary += '2';
        else if(S[i] == 3) trinary.pop_back();
        else if(S[i] == 4) take(trinary);
        else add(trinary);
    }
    cout << ans << "\n";
    int l = trinary.size();
    for(int i = 0; i < l; i++){
        if(trinary[i] != '0'){
            for(int j = i; j < l; j++) cout << trinary[j];
            break;
        }
    }
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base68/70
1Accepted0/01ms508 KiB
2Accepted0/01ms316 KiB
3Accepted2/21ms316 KiB
4Accepted3/31ms316 KiB
5Accepted3/31ms316 KiB
6Accepted3/31ms372 KiB
7Accepted3/31ms400 KiB
8Accepted3/31ms316 KiB
9Accepted3/31ms316 KiB
10Accepted3/31ms316 KiB
11Accepted3/31ms316 KiB
12Accepted3/31ms316 KiB
13Accepted3/31ms316 KiB
14Accepted3/31ms316 KiB
15Accepted4/41ms316 KiB
16Accepted4/41ms316 KiB
17Accepted4/41ms316 KiB
18Accepted4/41ms316 KiB
19Accepted4/41ms316 KiB
20Accepted4/41ms316 KiB
21Accepted4/41ms316 KiB
22Accepted4/41ms316 KiB
23Partially correct1/31ms316 KiB