150952025-02-12 19:21:34zhuyiTáblajáték 2 (70 pont)cpp17Részben helyes 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base68/70
1Elfogadva0/01ms508 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva3/31ms316 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms372 KiB
7Elfogadva3/31ms400 KiB
8Elfogadva3/31ms316 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva3/31ms316 KiB
11Elfogadva3/31ms316 KiB
12Elfogadva3/31ms316 KiB
13Elfogadva3/31ms316 KiB
14Elfogadva3/31ms316 KiB
15Elfogadva4/41ms316 KiB
16Elfogadva4/41ms316 KiB
17Elfogadva4/41ms316 KiB
18Elfogadva4/41ms316 KiB
19Elfogadva4/41ms316 KiB
20Elfogadva4/41ms316 KiB
21Elfogadva4/41ms316 KiB
22Elfogadva4/41ms316 KiB
23Részben helyes1/31ms316 KiB