제출 #1310554

#제출 시각아이디문제언어결과실행 시간메모리
1310554heraJust Long Neckties (JOI20_ho_t1)C++20
100 / 100
160 ms7088 KiB
#include <bits/stdc++.h> #define ll long long #define S second #define F first #define Ft front() #define T pair<string, pair<int, int>> using namespace std; ll gcd(ll a, ll b){ if(b==1) return a; else return gcd(b , a%b); } ll lcm(ll a, ll b){ return (a*b)/(gcd(a,b)); } ll binpow(ll a, ll b, ll MOD){ if(b==0) return 1; ll ans= binpow(a, b/2, MOD); if(b%2==0) return (ans*ans) % MOD; else return (((ans*ans)%MOD) * (a%MOD) % MOD); } int main(){ int n; cin>>n; vector<pair<int, int>> a (n+2); vector<int> b (n+1, 0); for(int i=1;i<=n+1;i++){ int x; cin>>x; a[i]={x, i}; } for(int i=1;i<=n;i++){ cin>>b[i]; } stable_sort(a.begin(), a.end()); stable_sort(b.begin(), b.end()); vector<int> difa(n+2, 0); vector<int> difb(n+2, 0); for(int i=1;i<=n;i++){ difa[i]=max(max(a[i].F-b[i], 0), difa[i-1]); } for(int i=n;i>=1;i--){ difb[i]=max(max(a[i+1].F-b[i], 0), difb[i+1]); } vector<int> ans(n+2); for(int i=1;i<=n+1;i++){ ans[a[i].S]=max(difb[i], difa[i-1]); } for(int i=1;i<=n+1;i++){ cout<<ans[i]<<' '; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...