Submission #2638932


Source Code Expand

#include<bits/stdc++.h>
using namespace std;

long long int N, M, K, a[2020202], bef, rem, ans[2020202][2];
vector<long long int> bullet;
set<pair<long long int, long long int>> rails;
vector<pair<long long, long long>> rail;
string S, T;

int main(){
    scanf("%lld%lld%lld", &N, &M, &K);
    cin >> S >> T;
    for(int i = 0; i < M; ++i){
        a[M - i - 1] = T[i] & 1;
    }
    for(int i = 0; i < N; ++i){
        a[N - i - 1] += 2 * (S[i] & 1);
    }
    M = max(N, M);
    for(int i = 0; i < M; ++i){
        if(a[i] == 3){
            a[i] = 0;
            bullet.push_back(i);
        }
    }
    reverse(bullet.begin(), bullet.end());
    rails.insert({0, a[0]});
    for(int i = 1; i <= M; ++i){
        if(a[i] != a[i - 1])rails.insert({i, a[i]});
    }
    rails.insert({M + K + 10, 27});
    auto itr = --rails.end();
    for(auto& b : bullet){
        rem = K;
        while(itr -> first > b)--itr;
        ++itr;
        for(auto beg = itr, thi = itr, nec = itr, edn = rails.end(); beg != edn; ++beg, nec = beg){
            ++nec;
            thi = nec;
            ++thi;
            if(rem == 0 || beg -> first > M + K)break;
            if(beg -> first > b + rem){
                b += rem;
                rem = 0;
                break;
            }else{
                rem -= beg -> first - b;
                b = beg -> first;
            }
            if(beg -> second == 0)continue;
            int nowidx = beg -> first, nowclr = beg -> second;
            if(thi -> first - nec -> first == 1){
                if(beg -> second + nec -> second == 3){
                    b = nec -> first;
                    if(thi -> second == 0)rails.erase(thi);
                    rails.erase(nec);
                    rails.insert(beg, {beg -> first + 1, 0});
                    nec = beg;
                    --nec;
                    rails.erase(beg);
                    beg = rails.insert(nec, {nowidx, 3 ^ nowclr});
                }else{
                    b = nec->first;
                    if(thi -> second == beg -> second)rails.erase(thi);
                    rails.erase(nec);
                    rails.insert(beg, {b, beg -> second});
                    if(b != beg -> first + 1)rails.insert(beg, {beg -> first + 1, 0});
                    nec = beg;
                    --nec;
                    rails.erase(beg);
                    beg = rails.insert(nec, {nowidx, 3 ^ nowclr});
                    b = M + K + 10;
                    break;
                }
            }else{
                if(beg -> second + nec -> second == 3){
                    b = nec -> first;
                    rails.erase(nec);
                    rails.insert(beg, {b + 1, 3 - beg -> second});
                    rails.insert(beg, {beg -> first + 1, 0});
                    nec = beg;
                    --nec;
                    rails.erase(beg);
                    beg = rails.insert(nec, {nowidx, 3 ^ nowclr});
                }else{
                    b = nec->first;
                    rails.erase(nec);
                    rails.insert(beg, {b + 1, 0});
                    rails.insert(beg, {b, beg -> second});
                    if(b != beg -> first + 1)rails.insert(beg, {beg -> first + 1, 0});
                    nec = beg;
                    --nec;
                    rails.erase(beg);
                    beg = rails.insert(nec, {nowidx, 3 ^ nowclr});
                    b = M + K + 10;
                    break;
                }
            }
        }
        if(rem > 0){
            b += rem;
        }
    }
    fill(ans[0], ans[2020202], 0);
    int J;
    for(auto beg = rails.begin(), nec = beg, edn = rails.end(); beg != edn; ++beg){
        nec = beg;
        nec++;
        if(J = beg -> second){
            for(int i = beg->first, k = nec->first; i < k; ++i){
                ans[i][0] = (J >> 0) & 1;
                ans[i][1] = (J >> 1) & 1;
            }
        }
    }
    for(auto i : bullet)ans[i][0] = ans[i][1] = 1;
    for(int it = 1; it >= 0; --it){
        for(int i = M + K + 5, j = 0; i >= 0; --i){
            if(j |= ans[i][it])cout << ans[i][it];
        }
        cout << endl;
    }
    return 0;
}

Submission Info

Submission Time
Task F - Addition and Andition
User MMNMM
Language C++14 (GCC 5.4.1)
Score 2400
Code Size 4306 Byte
Status AC
Exec Time 956 ms
Memory 109828 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:11:38: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%lld%lld%lld", &N, &M, &K);
                                      ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 2400 / 2400
Status
AC × 3
AC × 96
Set Name Test Cases
Sample sample01.txt, sample02.txt, sample03.txt
All sample01.txt, sample02.txt, sample03.txt, in01.txt, in02.txt, in03.txt, in04.txt, in05.txt, in06.txt, in07.txt, in08.txt, in09.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in29.txt, in30.txt, in31.txt, in32.txt, in33.txt, in34.txt, in35.txt, in36.txt, in37.txt, in38.txt, in39.txt, in40.txt, in41.txt, in42.txt, in43.txt, in44.txt, in45.txt, in46.txt, in47.txt, in48.txt, in49.txt, in50.txt, in51.txt, in52.txt, in53.txt, in54.txt, in55.txt, in56.txt, in57.txt, in58.txt, in59.txt, in60.txt, in61.txt, in62.txt, in63.txt, in64.txt, in65.txt, in66.txt, in67.txt, in68.txt, in69.txt, in70.txt, in71.txt, in72.txt, in73.txt, in74.txt, in75.txt, in76.txt, in77.txt, in78.txt, in79.txt, in80.txt, in81.txt, in82.txt, in83.txt, in84.txt, in85.txt, in86.txt, in87.txt, in88.txt, in89.txt, in90.txt, sample01.txt, sample02.txt, sample03.txt
Case Name Status Exec Time Memory
in01.txt AC 688 ms 92416 KB
in02.txt AC 677 ms 92288 KB
in03.txt AC 678 ms 92288 KB
in04.txt AC 677 ms 92288 KB
in05.txt AC 683 ms 92288 KB
in06.txt AC 675 ms 92288 KB
in07.txt AC 683 ms 92288 KB
in08.txt AC 675 ms 92160 KB
in09.txt AC 678 ms 92288 KB
in10.txt AC 683 ms 92160 KB
in11.txt AC 692 ms 92160 KB
in12.txt AC 692 ms 92288 KB
in13.txt AC 676 ms 92416 KB
in14.txt AC 689 ms 92160 KB
in15.txt AC 685 ms 92288 KB
in16.txt AC 738 ms 78712 KB
in17.txt AC 741 ms 80120 KB
in18.txt AC 754 ms 80376 KB
in19.txt AC 740 ms 80120 KB
in20.txt AC 746 ms 78584 KB
in21.txt AC 749 ms 80376 KB
in22.txt AC 956 ms 79864 KB
in23.txt AC 736 ms 78840 KB
in24.txt AC 732 ms 80248 KB
in25.txt AC 745 ms 80376 KB
in26.txt AC 828 ms 81656 KB
in27.txt AC 732 ms 80120 KB
in28.txt AC 742 ms 80248 KB
in29.txt AC 740 ms 79992 KB
in30.txt AC 819 ms 81784 KB
in31.txt AC 364 ms 68744 KB
in32.txt AC 366 ms 68744 KB
in33.txt AC 368 ms 68744 KB
in34.txt AC 362 ms 68872 KB
in35.txt AC 367 ms 68744 KB
in36.txt AC 367 ms 68872 KB
in37.txt AC 366 ms 68872 KB
in38.txt AC 363 ms 68872 KB
in39.txt AC 365 ms 68744 KB
in40.txt AC 363 ms 68744 KB
in41.txt AC 365 ms 68872 KB
in42.txt AC 365 ms 68744 KB
in43.txt AC 366 ms 68744 KB
in44.txt AC 365 ms 68744 KB
in45.txt AC 364 ms 69000 KB
in46.txt AC 921 ms 109700 KB
in47.txt AC 505 ms 65660 KB
in48.txt AC 909 ms 109700 KB
in49.txt AC 933 ms 109828 KB
in50.txt AC 510 ms 65660 KB
in51.txt AC 605 ms 77824 KB
in52.txt AC 602 ms 77824 KB
in53.txt AC 604 ms 77824 KB
in54.txt AC 606 ms 77824 KB
in55.txt AC 515 ms 75904 KB
in56.txt AC 605 ms 77696 KB
in57.txt AC 603 ms 77824 KB
in58.txt AC 604 ms 77696 KB
in59.txt AC 610 ms 77696 KB
in60.txt AC 606 ms 77952 KB
in61.txt AC 516 ms 75776 KB
in62.txt AC 603 ms 77696 KB
in63.txt AC 531 ms 75776 KB
in64.txt AC 601 ms 77824 KB
in65.txt AC 601 ms 77696 KB
in66.txt AC 603 ms 77696 KB
in67.txt AC 516 ms 75904 KB
in68.txt AC 601 ms 77824 KB
in69.txt AC 606 ms 77824 KB
in70.txt AC 518 ms 75776 KB
in71.txt AC 657 ms 86148 KB
in72.txt AC 657 ms 86276 KB
in73.txt AC 662 ms 86276 KB
in74.txt AC 658 ms 86276 KB
in75.txt AC 659 ms 86148 KB
in76.txt AC 660 ms 86148 KB
in77.txt AC 661 ms 86276 KB
in78.txt AC 662 ms 86148 KB
in79.txt AC 663 ms 86276 KB
in80.txt AC 664 ms 86148 KB
in81.txt AC 660 ms 86276 KB
in82.txt AC 658 ms 86276 KB
in83.txt AC 657 ms 86148 KB
in84.txt AC 659 ms 86276 KB
in85.txt AC 574 ms 84228 KB
in86.txt AC 659 ms 86276 KB
in87.txt AC 659 ms 86276 KB
in88.txt AC 656 ms 86276 KB
in89.txt AC 660 ms 86276 KB
in90.txt AC 664 ms 86276 KB
sample01.txt AC 10 ms 33024 KB
sample02.txt AC 10 ms 33024 KB
sample03.txt AC 10 ms 33024 KB