Submission #1244538

#TimeUsernameProblemLanguageResultExecution timeMemory
1244538inkvizytorJust Long Neckties (JOI20_ho_t1)C++20
100 / 100
66 ms7496 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long void change(int v, int x, vector<int> &tr) { v += 1<<18; tr[v] = x; while (v > 1) { v /= 2; tr[v] = max(tr[v*2], tr[v*2+1]); } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n; vector<pair<int, int>> a (n+1); vector<int> b (n, 0); for (int i = 0; i <= n; i++) { cin >> a[i].first; a[i].second = i; } for (int i = 0; i < n; i++) { cin >> b[i]; } sort(a.begin(), a.end()); sort(b.begin(), b.end()); vector<int> tr (1<<19, 0); for (int i = 0; i < n; i++) { tr[i+(1<<18)] = max(a[i].first-b[i], 0); } for (int i = (1<<18)-1; i > 0; i--) { tr[i] = max(tr[i*2], tr[i*2+1]); } vector<int> w (n+1, 0); w[a[n].second] = tr[1]; for (int i = n-1; i >= 0; i--) { change(i, max(a[i+1].first-b[i], 0), tr); w[a[i].second] = tr[1]; } for (int i = 0; i <= n; i++) { cout << w[i] << ' '; } cout << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...