結果

問題 No.3207 Digital Font
ユーザー amesyu
提出日時 2025-07-22 17:58:59
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,933 bytes
コンパイル時間 356 ms
コンパイル使用メモリ 82,708 KB
実行使用メモリ 56,400 KB
最終ジャッジ日時 2025-07-22 17:59:04
合計ジャッジ時間 4,240 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample WA * 2
other WA * 38
権限があれば一括ダウンロードができます

ソースコード

diff #

# Generated By Gemini 2.5 Pro

import sys
from bisect import bisect_left, bisect_right
import random

# Fast input
readline = sys.stdin.readline

class FenwickTree:
    """1D Fenwick Tree (BIT)"""
    def __init__(self, n, mod):
        self.n = n
        self.mod = mod
        self.data = [0] * (n + 1)

    def add(self, i, x):
        i += 1
        while i <= self.n:
            self.data[i] = (self.data[i] + x) % self.mod
            i += i & -i

    def _query(self, i):
        s = 0
        while i > 0:
            s = (s + self.data[i]) % self.mod
            i -= i & -i
        return s

    def query_range(self, l, r):
        if l > r:
            return 0
        res = (self._query(r + 1) - self._query(l) + self.mod) % self.mod
        return res

def solve():
    try:
        H_str, W_str = readline().split()
        H, W = int(H_str), int(W_str)
        N = int(readline())
        points = [list(map(int, readline().split())) for _ in range(N)]
        Q = int(readline())
        queries = [list(map(int, readline().split())) for _ in range(Q)]
    except (IOError, ValueError):
        return

    # --- Coordinate Compression ---
    cols_set = set()
    for _, c, _ in points:
        cols_set.add(c)
    for _, d, _, u in queries:
        cols_set.add(d)
        cols_set.add(u)
    all_cols = sorted(list(cols_set))
    col_map = {val: i for i, val in enumerate(all_cols)}
    compressed_w = len(all_cols)

    # --- Double Hashing Preparation ---
    MOD1, MOD2 = 10**9 + 7, 998244353
    P1_1, P2_1 = 37, 41
    P1_2, P2_2 = 43, 47

    max_pow = 2 * max(H, W)
    
    def precompute_powers(p, mod, size):
        p_inv = pow(p, mod - 2, mod)
        pows = [1] * (size + 1)
        inv_pows = [1] * (size + 1)
        for i in range(size):
            pows[i + 1] = (pows[i] * p) % mod
            inv_pows[i + 1] = (inv_pows[i] * p_inv) % mod
        return pows, inv_pows

    pow1_1, inv_pow1_1
0