Submission #57894449
Source Code Expand
from functools import cmp_to_key
import sys
input = sys.stdin.readline
def floor_sum(n, m, a, b):
a1, a2 = a // m, a % m
ans = n * (n - 1) // 2 * a1
if a2 == 0:
return ans + b // m * n
b1, b2 = b // m, b % m
y = (a2 * n + b2) // m
ans += n * (y + b1) - floor_sum(y, a2, m, m + a2 - b2 - 1)
return ans
def cmp(d1, d2):
a1, b1, c1 = d1
a2, b2, c2 = d2
if a1 * b2 != a2 * b1:
return a1 * b2 - a2 * b1
return c1 * a2 - c2 * a1
def clamp(x, l, r):
return min(r, max(l, x))
for _ in range(int(input())):
N = int(input())
L = [tuple(map(int, input().split())) for _ in range(N)]
L.sort(key=cmp_to_key(cmp))
co = []
x = []
INF = 10**18
x_lim = INF
for l in L:
aj, bj, cj = l
if len(co) >= 1:
ai, bi, ci = co[-1]
if ai * bj == aj * bi:
continue
while len(co) >= 2:
ai, bi, ci = co[-1]
xj = (bi * cj - bj * ci - 1) // (aj * bi - ai * bj) + 1
if xj > x[-1]:
break
co.pop()
x.pop()
co.append(l)
if len(x) == 0:
x.append(-INF)
else:
ai, bi, ci = co[-2]
xj = (bi * cj - bj * ci - 1) // (aj * bi - ai * bj) + 1
x.append(xj)
x_lim = min(x_lim, (cj + aj - 1) // aj)
x.append(INF)
ans = 0
for i in range(len(co)):
ai, bi, ci = co[i]
le, ri = clamp(x[i], 1, x_lim), clamp(x[i + 1], 1, x_lim)
n, m, a, b = ri - le, bi, ai, ci - 1 - ai * (ri - 1)
ans += floor_sum(n, m, a, b % m) + (b // m) * n
print(ans)
Submission Info
| Submission Time | |
|---|---|
| Task | G - Ax + By < C |
| User | sounansya |
| Language | Python (CPython 3.11.4) |
| Score | 625 |
| Code Size | 1722 Byte |
| Status | AC |
| Exec Time | 1597 ms |
| Memory | 55676 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 625 / 625 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 00_sample_00.txt, 00_sample_01.txt |
| All | 00_sample_00.txt, 00_sample_01.txt, 01_handmade_00.txt, 01_handmade_01.txt, 01_handmade_02.txt, 01_handmade_03.txt, 01_handmade_04.txt, 01_handmade_05.txt, 01_handmade_06.txt, 01_handmade_07.txt, 02_random_00.txt, 02_random_01.txt, 02_random_02.txt, 02_random_03.txt, 02_random_04.txt, 02_random_05.txt, 02_random_06.txt, 02_random_07.txt, 02_random_08.txt, 02_random_09.txt, 02_random_10.txt, 02_random_11.txt, 02_random_12.txt, 02_random_13.txt, 02_random_14.txt, 02_random_15.txt, 02_random_16.txt, 02_random_17.txt, 02_random_18.txt, 02_random_19.txt, 02_random_20.txt, 02_random_21.txt, 02_random_22.txt, 02_random_23.txt, 02_random_24.txt, 02_random_25.txt, 02_random_26.txt, 02_random_27.txt, 02_random_28.txt, 02_random_29.txt, 02_random_30.txt, 02_random_31.txt, 02_random_32.txt, 02_random_33.txt, 02_random_34.txt, 02_random_35.txt, 02_random_36.txt, 02_random_37.txt, 02_random_38.txt, 02_random_39.txt, 02_random_40.txt, 02_random_41.txt, 02_random_42.txt, 02_random_43.txt, 02_random_44.txt, 02_random_45.txt, 02_random_46.txt, 02_random_47.txt, 02_random_48.txt, 02_random_49.txt, 02_random_50.txt, 02_random_51.txt, 02_random_52.txt, 02_random_53.txt, 02_random_54.txt, 02_random_55.txt, 02_random_56.txt, 02_random_57.txt, 02_random_58.txt, 02_random_59.txt, 02_random_60.txt, 02_random_61.txt, 02_random_62.txt, 02_random_63.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00_sample_00.txt | AC | 11 ms | 9600 KiB |
| 00_sample_01.txt | AC | 12 ms | 9596 KiB |
| 01_handmade_00.txt | AC | 12 ms | 9532 KiB |
| 01_handmade_01.txt | AC | 836 ms | 9748 KiB |
| 01_handmade_02.txt | AC | 818 ms | 9876 KiB |
| 01_handmade_03.txt | AC | 926 ms | 9728 KiB |
| 01_handmade_04.txt | AC | 755 ms | 10032 KiB |
| 01_handmade_05.txt | AC | 699 ms | 23208 KiB |
| 01_handmade_06.txt | AC | 870 ms | 10044 KiB |
| 01_handmade_07.txt | AC | 1013 ms | 9784 KiB |
| 02_random_00.txt | AC | 1214 ms | 55144 KiB |
| 02_random_01.txt | AC | 1207 ms | 54892 KiB |
| 02_random_02.txt | AC | 1214 ms | 55564 KiB |
| 02_random_03.txt | AC | 1327 ms | 10032 KiB |
| 02_random_04.txt | AC | 836 ms | 9972 KiB |
| 02_random_05.txt | AC | 1363 ms | 10036 KiB |
| 02_random_06.txt | AC | 1145 ms | 9904 KiB |
| 02_random_07.txt | AC | 1106 ms | 9976 KiB |
| 02_random_08.txt | AC | 1490 ms | 9984 KiB |
| 02_random_09.txt | AC | 1597 ms | 10060 KiB |
| 02_random_10.txt | AC | 1232 ms | 54828 KiB |
| 02_random_11.txt | AC | 1112 ms | 42516 KiB |
| 02_random_12.txt | AC | 1079 ms | 32500 KiB |
| 02_random_13.txt | AC | 1054 ms | 26412 KiB |
| 02_random_14.txt | AC | 965 ms | 14376 KiB |
| 02_random_15.txt | AC | 762 ms | 9872 KiB |
| 02_random_16.txt | AC | 731 ms | 9844 KiB |
| 02_random_17.txt | AC | 1502 ms | 9720 KiB |
| 02_random_18.txt | AC | 1536 ms | 9888 KiB |
| 02_random_19.txt | AC | 1224 ms | 54908 KiB |
| 02_random_20.txt | AC | 1125 ms | 42412 KiB |
| 02_random_21.txt | AC | 1067 ms | 32136 KiB |
| 02_random_22.txt | AC | 1042 ms | 26428 KiB |
| 02_random_23.txt | AC | 954 ms | 14280 KiB |
| 02_random_24.txt | AC | 756 ms | 9900 KiB |
| 02_random_25.txt | AC | 740 ms | 9920 KiB |
| 02_random_26.txt | AC | 1483 ms | 9896 KiB |
| 02_random_27.txt | AC | 1504 ms | 9828 KiB |
| 02_random_28.txt | AC | 1312 ms | 9724 KiB |
| 02_random_29.txt | AC | 1213 ms | 9784 KiB |
| 02_random_30.txt | AC | 998 ms | 9776 KiB |
| 02_random_31.txt | AC | 887 ms | 9740 KiB |
| 02_random_32.txt | AC | 814 ms | 9812 KiB |
| 02_random_33.txt | AC | 766 ms | 9828 KiB |
| 02_random_34.txt | AC | 604 ms | 9860 KiB |
| 02_random_35.txt | AC | 631 ms | 9788 KiB |
| 02_random_36.txt | AC | 702 ms | 10128 KiB |
| 02_random_37.txt | AC | 730 ms | 33672 KiB |
| 02_random_38.txt | AC | 1110 ms | 55140 KiB |
| 02_random_39.txt | AC | 1302 ms | 9864 KiB |
| 02_random_40.txt | AC | 1212 ms | 9796 KiB |
| 02_random_41.txt | AC | 992 ms | 9832 KiB |
| 02_random_42.txt | AC | 885 ms | 9740 KiB |
| 02_random_43.txt | AC | 807 ms | 9784 KiB |
| 02_random_44.txt | AC | 776 ms | 9804 KiB |
| 02_random_45.txt | AC | 604 ms | 9820 KiB |
| 02_random_46.txt | AC | 626 ms | 9852 KiB |
| 02_random_47.txt | AC | 686 ms | 9984 KiB |
| 02_random_48.txt | AC | 670 ms | 33528 KiB |
| 02_random_49.txt | AC | 1070 ms | 55676 KiB |
| 02_random_50.txt | AC | 1040 ms | 9784 KiB |
| 02_random_51.txt | AC | 939 ms | 9816 KiB |
| 02_random_52.txt | AC | 896 ms | 9760 KiB |
| 02_random_53.txt | AC | 843 ms | 9852 KiB |
| 02_random_54.txt | AC | 711 ms | 9956 KiB |
| 02_random_55.txt | AC | 752 ms | 12228 KiB |
| 02_random_56.txt | AC | 943 ms | 47304 KiB |
| 02_random_57.txt | AC | 1024 ms | 9708 KiB |
| 02_random_58.txt | AC | 943 ms | 9748 KiB |
| 02_random_59.txt | AC | 875 ms | 9788 KiB |
| 02_random_60.txt | AC | 840 ms | 9772 KiB |
| 02_random_61.txt | AC | 705 ms | 10008 KiB |
| 02_random_62.txt | AC | 753 ms | 12164 KiB |
| 02_random_63.txt | AC | 936 ms | 47888 KiB |