제출 #1280345

#제출 시각아이디문제언어결과실행 시간메모리
1280345hanguyendanghuyJust Long Neckties (JOI20_ho_t1)C++20
9 / 100
56 ms6636 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define fi first #define se second constexpr ll MAXN=1e5+5,MAXV=3e5,MOD=1e9+7,INF=1e18; ll n,m,i,j,p,k,ans[MAXN],dem,st,en,b[MAXN]; struct h{ ll a,id; } a[MAXN]; bool cmp(h x,h y){ return x.a<y.a; } struct seg{ ll c[4*MAXN]; void build(ll id,ll l,ll r){ if(l==r) c[id]=a[l].a-b[l]; else{ ll m=(l+r)/2; build(id*2,l,m); build(id*2+1,m+1,r); c[id]=max(c[id*2],c[id*2+1]); } } void update(ll id,ll l,ll r,ll pos,ll val){ if(l>pos||r<pos) return; else if(l==r) c[id]=val; else{ ll m=(l+r)/2; update(id*2,l,m,pos,val); update(id*2+1,m+1,r,pos,val); c[id]=max(c[id*2],c[id*2+1]); } } ll get(){ return c[1]; } } seg; int main(){ ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); cin>>n; for(i=0;i<=n;i++) cin>>a[i].a,a[i].id=i; for(i=1;i<=n;i++) cin>>b[i]; sort(a,a+n+1,cmp); sort(b+1,b+n+1); seg.build(1,1,n); ans[a[0].id]=seg.get(); for(i=1;i<=n;i++){ seg.update(1,1,n,i,a[i-1].a-b[i]); ans[a[i].id]=seg.get(); } for(i=0;i<=n;i++) cout<<ans[i]<<" "; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...