Problem müəllifi: | Imran AKKI |
Hazırlayan: | Imran AKKI |
Redaktor: | Hasan Saleh (MathModel) |
Həll Problemi, hər iştirakçının qət etdiyi ümumi məsafəni tapmaq və Bobdan daha çox məsafə qət edən iştirakçıların sayını hesablamaq kimi düşünmək olar.
Məsafəni simulyasiya etmək üçün sürət və sürət azalması üçün, hər addımda ilkin -ni vahidlərinin çoxluğu qədər azaltmağa davam edirsiniz, yalnız müsbət olduğu müddətcə. Rəsmi olaraq ümumi məsafə belə olacaq:
Burada k=\lfloor \frac{s-1}{t} \rfloor — əldə edilə biləcək maksimum müsbət sürətdir.
Məsafəni hesablamaq üçün, k+1 dəfə təkrarlanır və mənfi hissədə (1+2+3+...+k)t var, və 1+2+3+...+k=\frac{k(k+1)}{2} olduğunu bildiyimiz üçün ümumi məsafə belə hesablanır:
Buna görə də, -ci iştirakçının məsafəsini d_i kimi hesablayın, dəyərləri sıralayın və Bobdan daha çox qaçan iştirakçıların sayını tapın.
for _ in range(int(input())):
n,b=map(int,input().split())
s=list(map(int,input().split()))
t=list(map(int,input().split()))
a=[]
want=-1
for i in range(n):
x=s[i]
r=(s[i]-1)//t[i]
x+=s[i]*r
v=(r*(r+1))//2
x-=v*t[i]
a.append(x)
if(i+1==b):
want=x
a.sort()
ans=1
for i in range(n-1):
if(a[i]==want and a[i+1]>want):
ans=n-i
break
print(ans)Çətinlik \mathcal{O}(n \log n).