Submission #342699

#TimeUsernameProblemLanguageResultExecution timeMemory
342699blueJust Long Neckties (JOI20_ho_t1)C++11
100 / 100
473 ms18624 KiB
#include <iostream>
#include <set>
#include <algorithm>
using namespace std;

int A[200001];

int main()
{
    int N;
    cin >> N;

    for(int i = 0; i < N+1; i++) cin >> A[i];

    int I[N+1];
    for(int i = 0; i < N+1; i++) I[i] = i;
    sort(I, I+N+1, [] (int p, int q)
    {
        return A[p] < A[q];
    });

    int B[N];
    for(int i = 0; i < N; i++) cin >> B[i];
    sort(B, B+N);

    multiset<int> strange;
    for(int i = 0; i < N; i++) strange.insert(max(A[I[i]] - B[i], 0));

    int res[N+1];

    res[I[N]] = *strange.rbegin();

    for(int i = N-1; i >= 0; i--)
    {
        strange.erase(strange.find(max(A[I[i]] - B[i], 0)));
        strange.insert(max(A[I[i+1]] - B[i], 0));

        res[I[i]] = *strange.rbegin();
    }
    for(int i = 0; i < N+1; i++) cout << res[i] << ' ';
    cout << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...