Submission #668732

#TimeUsernameProblemLanguageResultExecution timeMemory
668732Mystic03Cipele (COCI18_cipele)C++17
90 / 90
48 ms2908 KiB
#include <bits/stdc++.h>

using namespace std;

// Binary search for answer. An answer works if you greedily chose elements to
// be paired and that works. If an answer works, then all above will work too.

const int MAXNM = 1e5 + 3;

int n, m, l[MAXNM], r[MAXNM];


bool ok(int val) {
    int pt = 1;

    for (int i = 1; i <= n; i++) {
        if (abs(r[pt] - l[i]) <= val) pt++;
        if (pt == m + 1) return true;
    }

    return pt == m + 1;
}


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

    cin >> n >> m;

    if (n >= m) {
        for (int i = 0; i < n; i++) cin >> l[i];
        for (int i = 0; i < m; i++) cin >> r[i];
    }
    else {
        for (int i = 0; i < n; i++) cin >> r[i];
        for (int i = 0; i < m; i++) cin >> l[i];
        swap(n, m);
    }

    sort(l, l + n);
    sort(r, r + m);

    int lp = 0, rp = 1e9;

    while (lp < rp) {
        int mid = (lp + rp) >> 1;
        if (ok(mid)) rp = mid;
        else lp = mid + 1;
    }

    cout << lp << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...