Submission #1070036

#TimeUsernameProblemLanguageResultExecution timeMemory
1070036BigBadBullySprinklers (CEOI24_sprinklers)C++17
6 / 100
187 ms5356 KiB
// Online C++ compiler to run C++ program online #include <bits/stdc++.h> using namespace std; #define int long long #define ff first #define ss second #define pii pair<int,int> pii bad = {-1,-1}; const int jonkler = 1e15; signed main() { int n,m; cin >> n >> m; vector<int> a(n),b(m); for (int i = 0; i < n; i++) cin >> a[i]; for (int i = 0; i < m; i++) cin >> b[i]; auto solve = [&](int k) { queue<pii> all; int i = 0, j = 0; while(i < n && j < m) { if (a[i] < b[j]) all.push({a[i++],1}); else all.push({b[j++],0}); } while (i<n) all.push({a[i++],1}); while (j<m) all.push({b[j++],0}); int prev = jonkler; int range = -1; while (all.size()) { auto cur = all.front(); if (cur.ss) { if (prev == jonkler) range = cur.ff+k; else { if (prev < cur.ff - k) { return 0; } else prev = jonkler; } } else { if (cur.ff>range) prev = min(prev,cur.ff); } all.pop(); } if (prev > range && prev != jonkler) return 0; return 1; }; int l = 0, r = 1e10; while(r-l>1) { int mid = l+r>>1; if (solve(mid)) r = mid; else l = mid; } string ans; auto fillstr = [&](int k) { queue<pii> all; int i = 0, j = 0; while(i < n && j < m) { if (a[i] < b[j]) all.push({a[i++],1}); else all.push({b[j++],0}); } while (i<n) all.push({a[i++],1}); while (j<m) all.push({b[j++],0}); int prev = jonkler; int range = -1; while (all.size()) { auto cur = all.front(); if (cur.ss) { if (prev == jonkler) { range = cur.ff+k; ans.push_back('R'); } else { prev = jonkler; ans.push_back('L'); } } else { if (cur.ff>range) prev = min(prev,cur.ff); } all.pop(); } }; if (r == 1e10) cout << "-1\n"; else { if (solve(l)) { cout << l << '\n'; fillstr(l); cout << ans << '\n'; } else { cout << r << '\n'; fillstr(r); cout << ans << '\n'; } } return 0; }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:67:20: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   67 |         int mid = l+r>>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...