Official
J - オフィス / Office Editorial
by
J - オフィス / Office Editorial
by
kyopro_friends
余事象を考えます。
人 \(i\) が会わなかった社員について考えます。そのような社員は次のうちどちらかです。
- 人 \(i\) が出社する前に退社した
- 人 \(i\) が退社した後に出社した
よって、それぞれの人の出社・退社時に、既に退社した人数・まだ出社していない人数がわかればよいです。人の出社退社を時刻順にシミュレーションすることでこれらを求めることができます。
writer解(Python)
N=int(input())
start=[[] for _ in range(2*10**5+10)]
end=[[] for _ in range(2*10**5+10)]
for i in range(N):
S,T=map(int,input().split())
start[S].append(i)
end[T].append(i)
already=0
yet=N
ans=[N-1]*N
for t,(si,ti) in enumerate(zip(start,end)):
for i in si:
ans[i]-=already
yet-=1
for i in ti:
ans[i]-=yet
already+=1
print(*ans)
posted:
last update:
