제출 #38700

#제출 시각아이디문제언어결과실행 시간메모리
38700aomeBoard (CEOI13_board)C++14
70 / 100
200 ms2700 KiB
#include <bits/stdc++.h>
using namespace std;

void modify(string &S, vector<char>& V) {
    for (int i = 0; i < S.size(); ++i) {
        if (S[i] == '1') V.push_back('1');
        if (S[i] == '2') V.push_back('2');
        if (S[i] == 'U') V.pop_back();
        if (S[i] == 'L') {
            int id = V.size();
            while (id--) {
                if (V[id] == '1') V[id] = '2';
                else { V[id] = '1'; break; }
            }
        }
        if (S[i] == 'R') {
            int id = V.size();
            while (id--) {
                if (V[id] == '2') V[id] = '1';
                else { V[id] = '2'; break; }
            }
        }
    }
}

void print(vector<char> &V) {
    for (int i = 0; i < V.size(); ++i) cout << V[i]; cout << '\n';
}

int main() {
    ios::sync_with_stdio(false);
    string sA, sB; cin >> sA >> sB;
    vector<char> vA, vB;
    modify(sA, vA), modify(sB, vB);
//    print(vA), print(vB);
    int res = 1e9, dis = 0;
    int szA = vA.size(), szB = vB.size();
    for (int i = 0; i < min(szA, szB); ++i) {
        res = min(res, szA + szB - 2 * i + dis);
        if (!dis) {
            if (vA[i] == vB[i]) continue;
            else {
                dis = 1;
                if (vA[i] == '2') swap(vA, vB), swap(szA, szB);
            }
        }
        else {
            if (vA[i] == '2' && vB[i] == '1') dis = dis * 2 - 1;
            else if (vA[i] == '1' && vB[i] == '2') dis = dis * 2 + 1;
            else dis = dis * 2;
        }
        if (dis > res) break;
    }
    res = min(res, szA + szB - 2 * min(szA, szB) + dis);
    cout << res;
}

컴파일 시 표준 에러 (stderr) 메시지

board.cpp: In function 'void modify(std::__cxx11::string&, std::vector<char>&)':
board.cpp:5:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < S.size(); ++i) {
                       ^
board.cpp: In function 'void print(std::vector<char>&)':
board.cpp:27:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < V.size(); ++i) cout << V[i]; cout << '\n';
                       ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...