Submission #1281431

#TimeUsernameProblemLanguageResultExecution timeMemory
1281431shirokitoJust Long Neckties (JOI20_ho_t1)C++20
100 / 100
196 ms14788 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;

const int N = 2e5 + 24;

struct Data {
	int v, i;
	bool operator < (Data &oth) { return v < oth.v; }
} a[N];

int n, b[N], ans[N];

void solve() {
	cin >> n;
	for (int i = 1; i <= n + 1; i++) {
		cin >> a[i].v;
		a[i].i = i;
	}
	for (int i = 1; i <= n; i++) {
		cin >> b[i];
	}

	sort(a + 1, a + n + 2);
	sort(b + 1, b + n + 1);

	multiset<int> s;
	for (int i = 1; i <= n; i++) {
		s.insert({a[i].v - b[i]});
	}

	ans[a[n + 1].i] = *s.rbegin();

	for (int i = n; i >= 1; i--) {
		s.erase(s.find({a[i].v - b[i]}));
		s.insert({a[i + 1].v - b[i]});
		ans[a[i].i] = *s.rbegin();
	}

	for (int i = 1; i <= n + 1; i++) {
		cout << ans[i] << " \n" [i == n + 1];
	}
}

int main() {
	cin.tie(0) -> sync_with_stdio(0);

	int T = 1; // cin >> T;
	while (T--) {
		solve();
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...