Submission #263550

# Submission time Handle Problem Language Result Execution time Memory
263550 2020-08-13T19:23:13 Z Sorting Board (CEOI13_board) C++17
70 / 100
200 ms 896 KB
#include <bits/stdc++.h>

using namespace std;

string a, b;

string get_path(const string &s){
    string ans = "";
    int n = s.size();
    for(int i = 0; i < n; ++i){
        if(s[i] == '1' || s[i] == '2')
            ans.push_back(s[i]);
        else{
            if(s[i] == 'U')
                ans.pop_back();
            else{
                if(s[i] == 'L'){
                    for(int j = (int)ans.size() - 1; j >= 0; --j){
                        if(ans[j] == '2'){
                            ans[j] = '1';
                            for(int k = j + 1; k < (int)ans.size(); ++k)
                                ans[k] = '2';
                            break;
                        }
                    }
                }
                else if(s[i] == 'R'){
                    for(int j = (int)ans.size() - 1; j >= 0; --j){
                        if(ans[j] == '1'){
                            ans[j] = '2';
                            for(int k = j + 1; k < (int)ans.size(); ++k)
                                ans[k] = '1';
                            break;
                        }
                    }
                }
            }
        }
    }
    return ans;
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);

    cin >> a >> b;

    a = get_path(a);
    b = get_path(b);

    int x = a.size() + b.size();
    int dist = 0, ans = x;
    bool ok = false;
    for(int i = 0; i < min(a.size(), b.size()); ++i){
        if(a[i] != b[i] && !ok){
            ok = true;
            if(a[i] == '2')
                swap(a, b);
        }

        dist = 2 * dist - 1;
        if(a[i] == '1') dist++;
        if(b[i] == '2') dist++;

        if(dist > 3) break;
        ans = min(ans, dist + x - 2 * (i + 1));
    }

    cout << ans << "\n";
}

Compilation message

board.cpp: In function 'int main()':
board.cpp:55:22: warning: comparison of integer expressions of different signedness: 'int' and 'const long unsigned int' [-Wsign-compare]
   55 |     for(int i = 0; i < min(a.size(), b.size()); ++i){
      |                    ~~^~~~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 0 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 640 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 3 ms 648 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 0 ms 384 KB Output is correct
3 Correct 0 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 512 KB Output is correct
2 Correct 4 ms 768 KB Output is correct
3 Correct 3 ms 640 KB Output is correct
4 Correct 0 ms 384 KB Output is correct
5 Correct 1 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 288 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 0 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 1 ms 384 KB Output is correct
3 Correct 0 ms 384 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 512 KB Output is correct
2 Correct 4 ms 768 KB Output is correct
3 Correct 3 ms 640 KB Output is correct
4 Correct 1 ms 384 KB Output is correct
5 Correct 1 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 1093 ms 896 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1088 ms 896 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1080 ms 768 KB Time limit exceeded
2 Halted 0 ms 0 KB -