Submission #384335

#TimeUsernameProblemLanguageResultExecution timeMemory
384335AdiZer0Cipele (COCI18_cipele)C++17
90 / 90
69 ms2560 KiB
#include <bits/stdc++.h>

#define pb push_back
#define whole(x) x.begin(), x.end()
#define sz(x) (int)x.size()

using namespace std;

typedef long long ll;
typedef long double ld;

const int N = (int)1e5 + 7;
const int INF = (int)1e9 + 7;
const ll linf = (ll)1e18 + 1;

int n, m;
int a[N], b[N];

bool ok(int mx) { 
    int p = 1;
    for (int i = 1; i <= n; ++i) { 
        while (p <= m && abs(a[i] - b[p]) > mx) ++p;
        if (abs(a[i] - b[p]) > mx) ++p;
        if (p > m) return false;
        ++p;
    }
    return true;
}

int main() {
    scanf ("%d %d", &n, &m);
    for (int i = 1; i <= n; ++i) scanf ("%d", a + i);
    for (int i = 1; i <= m; ++i) scanf ("%d", b + i);
    if (n > m) { 
        for (int i = 1; i <= n; ++i) swap(a[i], b[i]);
        swap(n, m);
    }
    sort(a + 1, a + n + 1); 
    sort(b + 1, b + m + 1);
    int l = 0, r = (int)1e9;
    while (r - l > 1) { 
        int mid = l + r >> 1;
        if (ok(mid)) r = mid;
        else l = mid;
    }
    if (ok(l)) printf ("%d\n", l);
    else printf ("%d\n", r);
    return 0;
}

Compilation message (stderr)

cipele.cpp: In function 'int main()':
cipele.cpp:42:21: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   42 |         int mid = l + r >> 1;
      |                   ~~^~~
cipele.cpp:31:11: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   31 |     scanf ("%d %d", &n, &m);
      |     ~~~~~~^~~~~~~~~~~~~~~~~
cipele.cpp:32:40: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   32 |     for (int i = 1; i <= n; ++i) scanf ("%d", a + i);
      |                                  ~~~~~~^~~~~~~~~~~~~
cipele.cpp:33:40: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   33 |     for (int i = 1; i <= m; ++i) scanf ("%d", b + i);
      |                                  ~~~~~~^~~~~~~~~~~~~
#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...