This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair< int, int > ii;
typedef pair< int, ii > iii;
typedef vector< int > vi;
typedef vector< ii > vii;
typedef vector< iii > viii;
typedef vector< vi > vvi;
typedef vector< vii > vvii;
typedef vector< viii > vviii;
#define hdp 1e9+7
#define MAX LLONG_MAX
#define st first
#define nd second
int main(){
int n; cin >> n;
vi a(n+1); for(int i=0; i<=n; i++) cin >> a[i];
vi a0 = a, b(n); for(int i=0; i<n; i++) cin >> b[i];
sort(a.begin(), a.end()); sort(b.begin(), b.end());
unordered_map<int, int> idx; for(int i=0; i<=n; i++) idx[a[i]] = i;
vi dpl(n + 1), dpr(n + 1);
for(int i=1; i<=n; i++){
dpl[i] = max(0, a[i - 1] - b[i - 1]);
dpr[i - 1] = max(0, a[i] - b[i - 1]);
}
for(int i=1; i<=n; i++) dpl[i] = max(dpl[i], dpl[i - 1]);
for(int i=n; i>=1; i--) dpr[i - 1] = max(dpr[i - 1], dpr[i]);
for(int i=0; i<=n; i++){
if(i != 0) cout << " ";
int trace = idx[a0[i]];
cout << max(dpl[trace], dpr[trace]);
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |