-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsumq2.py
More file actions
63 lines (61 loc) · 1.06 KB
/
sumq2.py
File metadata and controls
63 lines (61 loc) · 1.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
T=int(input())
n=1
while n<=T:
p,q,r=map(int,input().split())
A=[int(x) for x in input().split()]
B=[int(x) for x in input().split()]
C=[int(x) for x in input().split()]
ans=0
A1=[]
C1=[]
m=[[0,0] for i in range (100001)]
A.sort()
B.sort()
C.sort()
def binary1(num,h):
l=0
if A[0]>num:
return -1
elif A[h]<=num:
return h
else:
while l!=h-1:
mid=(l+h)//2
if A[mid]<=num:
l=mid
elif A[mid]>num:
h=mid
return l
def binary2(num,h):
l=0
if C[0]>num:
return -1
elif C[h]<=num:
return h
else:
while l!=h-1:
mid=(l+h)//2
if C[mid]<=num:
l=mid
elif C[mid]>num:
h=mid
return l
s=0
for i in range (len(A)):
s+=A[i]
A1.append(s)
s=0
for i in range (len(C)):
s+=C[i]
C1.append(s)
for i in range(q):
m[i][0]=binary1(B[i],p-1);
m[i][1]=binary2(B[i],r-1);
print(m[i][0],m[i][1])
if m[i][0]!=-1 and m[i][1]!=-1:
s=m[i][0]
u=m[i][1]
ans=ans+(B[i]*(u+1)*A1[s])+(A1[s]*C1[u])+((u+1)*(s+1)*B[i]*B[i])+(B[i]*(s+1)*C1[u]);
ans=int(ans)
print (ans%1000000007)
n+=1