1508A - Binary Literature - CodeForces Solution


constructive algorithms greedy implementation strings two pointers *1900

Please click on ads to support us..

C++ Code:

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

const int N = 1e5 + 5;

char a[3][2*N];
char s[3*N];

const char* solve() {
    int n;
    cin >> n >> a[0] >> a[1] >> a[2];

    int cnt[3][2] = {0};
    for (int k = 0; k < 3; k++) {
        for (int i = 0; i < 2*n; i++)
            cnt[k][a[k][i] - '0']++;
    }

    // Choose appropriate strings and character (0 or 1)
    int u, v; char c;
    for (int uu = 0; uu < 3; uu++) {
        for (int vv = uu+1; vv < 3; vv++) {
            for (int cc = 0; cc < 2; cc++) {
                if (cnt[uu][cc] >= n && cnt[vv][cc] >= n) {
                    u = uu;
                    v = vv;
                    c = cc + '0';
                }
            }
        }
    }

    int p = 0, q = 0, r = 0;
    while (p < 2*n && q < 2*n) {
        if (a[u][p] == a[v][q]) {
            s[r++] = a[u][p];
            p++, q++;
        }
        else if (a[u][p] != c)
            s[r++] = a[u][p++];
        else
            s[r++] = a[v][q++];
    }
    while (p < 2*n)
        s[r++] = a[u][p++];
    while (q < 2*n)
        s[r++] = a[v][q++];
    s[r] = 0;
    return s;
}

int main() {
    cin.tie(0)->sync_with_stdio(false);

    int t; cin >> t;
    while (t--)
        cout << solve() << "\n";

    return 0;
}


Comments

Submit
0 Comments
More Questions

1657C - Bracket Sequence Deletion
1657B - XY Sequence
1009A - Game Shopping
1657A - Integer Moves
230B - T-primes
630A - Again Twenty Five
1234D - Distinct Characters Queries
1183A - Nearest Interesting Number
1009E - Intercity Travelling
1637B - MEX and Array
224A - Parallelepiped
964A - Splits
1615A - Closing The Gap
4C - Registration System
1321A - Contest for Robots
1451A - Subtract or Divide
1B - Spreadsheet
1177A - Digits Sequence (Easy Edition)
1579A - Casimir's String Solitaire
287B - Pipeline
510A - Fox And Snake
1520B - Ordinary Numbers
1624A - Plus One on the Subset
350A - TL
1487A - Arena
1520D - Same Differences
376A - Lever
1305A - Kuroni and the Gifts
1609A - Divide and Multiply
149B - Martian Clock