Submission #168862

#TimeUsernameProblemLanguageResultExecution timeMemory
168862Mamnoon_SiamCipele (COCI18_cipele)C++17
90 / 90
629 ms5000 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using ii = pair<int, int>; const int maxn = 1e5 + 5; int n, m; int a[maxn], b[maxn]; int par[maxn]; int find(int u) { return par[u] == u ? u : par[u] = find(par[u]); } bool can(int del) { vector<ii> v; for(int i = 1; i <= n; i++) { int l = lower_bound(b + 1, b + 1 + m, a[i] - del) - b; int r = upper_bound(b + 1, b + 1 + m, a[i] + del) - b - 1; if(l > r) return 0; v.emplace_back(l, r); } sort(v.begin(), v.end()); iota(par, par + 1 + m + 1, 0); for(ii el : v) { int l = el.first, r = el.second; int mn = find(l); if(mn > r) { return 0; } else { par[mn] = mn + 1; } } return 1; } int main(int argc, char const *argv[]) { #ifdef LOCAL freopen("in", "r", stdin); #endif cin >> n >> m; if(n <= m) { for(int i = 1; i <= n; i++) { cin >> a[i]; } for(int i = 1; i <= m; i++) { cin >> b[i]; } } else { for(int i = 1; i <= n; i++) { cin >> b[i]; } for(int i = 1; i <= m; i++) { cin >> a[i]; } swap(n, m); } sort(a + 1, a + 1 + n); sort(b + 1, b + 1 + m); int lo = 0, hi = 1e9, opt = -1, mid; while(lo <= hi) { mid = lo + hi >> 1; if(can(mid)) { opt = mid; hi = mid - 1; } else { lo = mid + 1; } } cout << opt << endl; return 0; }

Compilation message (stderr)

cipele.cpp: In function 'int main(int, const char**)':
cipele.cpp:64:12: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   mid = lo + hi >> 1;
         ~~~^~~~
#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...