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
AC × 2
AC × 74
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