답안 #1097270

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1097270 2024-10-06T15:46:15 Z codexistent 게임판 (CEOI13_board) C++14
30 / 100
4 ms 860 KB
#include <bits/stdc++.h>
using namespace std;
#define MAXN 100005
#define FOR(i, a, b) for(int i = a; i <= b; i++)
#define f first
#define s second
 
int r = 0;
int res = INT_MAX;
 
pair<int, int> getnd(string str){
    pair<int, int> nd = {0, 1};
 
    for(char c : str){
        if(c == '1'){
            nd.f++;
            nd.s = nd.s * 2 - 1;
        }else if(c == '2'){
            nd.f++;
            nd.s *= 2;
        }else if(c == 'U'){
            nd.f--;
            nd.s =  (nd.s + 1) / 2;
        }else if(c == 'L'){
            nd.s--;
        }else if(c == 'R'){
            nd.s++;
        } 
        // cout << " => " << nd.f << ", " << nd.s << endl;
    }
 
    return nd;
}
 
pair<int, int> moveup(pair<int, int>& nd, int upsz){
    FOR(i, 1, upsz){
        nd.f--;
        nd.s = (nd.s + 1) / 2;
    }
    return nd;
}
 
void go(pair<int, int> a, pair<int, int> b){
    if(a.s > b.s) swap(a, b);
    while(a.f != 0){
        int ud = 2 + (b.s - a.s) / 2 + (a.s % 2 == 0 && b.s % 2 == 1);
 
        res = min(res, r + (b.s - a.s));

        a = moveup(a, 1), b = moveup(b, 1);
        r += 2;
    }
    res = min(res, r);
}
 
int main(){
    string sa, sb; cin >> sa >> sb;
    pair<int, int> a = getnd(sa);
    // cout << endl;
    pair<int, int> b = getnd(sb);
 
    if(a.f < b.f) swap(a, b);
    r += a.f - b.f;
    a = moveup(a, a.f - b.f);
 
    go(a, b);
 
    cout << res << endl;
}

Compilation message

board.cpp: In function 'void go(std::pair<int, int>, std::pair<int, int>)':
board.cpp:46:13: warning: unused variable 'ud' [-Wunused-variable]
   46 |         int ud = 2 + (b.s - a.s) / 2 + (a.s % 2 == 0 && b.s % 2 == 1);
      |             ^~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 860 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 3 ms 604 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 700 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 856 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 856 KB Output isn't correct
2 Halted 0 ms 0 KB -