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 |
|
|
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 |