gaokao-pro 0.3.19 → 0.3.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/data/datasets/yifenyiduan-manifest.json +1403 -96
  2. package/data/yifenyiduan/_ocr-pipeline/ingest-anhui-2026-pdf.py +174 -0
  3. package/data/yifenyiduan/_ocr-pipeline/ingest-html.py +77 -7
  4. package/data/yifenyiduan/_ocr-pipeline/vision-ocr.swift +26 -0
  5. package/data/yifenyiduan/anhui-2026-history.json +1 -0
  6. package/data/yifenyiduan/anhui-2026-physics.json +1 -0
  7. package/data/yifenyiduan/beijing-2026-combined.json +1 -0
  8. package/data/yifenyiduan/fujian-2026-history.json +2283 -0
  9. package/data/yifenyiduan/fujian-2026-physics.json +2368 -0
  10. package/data/yifenyiduan/guangxi-2026-history.json +1 -0
  11. package/data/yifenyiduan/guangxi-2026-physics.json +1 -0
  12. package/data/yifenyiduan/guizhou-2026-history.json +1 -0
  13. package/data/yifenyiduan/guizhou-2026-physics.json +1 -0
  14. package/data/yifenyiduan/hainan-2026-combined.json +2748 -0
  15. package/data/yifenyiduan/hubei-2026-history.json +1 -0
  16. package/data/yifenyiduan/hubei-2026-physics.json +1 -0
  17. package/data/yifenyiduan/hunan-2026-history.json +1 -0
  18. package/data/yifenyiduan/hunan-2026-physics.json +1 -0
  19. package/data/yifenyiduan/jiangsu-2026-history.json +1 -0
  20. package/data/yifenyiduan/jiangsu-2026-physics.json +1 -0
  21. package/data/yifenyiduan/jiangxi-2026-history.json +1 -0
  22. package/data/yifenyiduan/jiangxi-2026-physics.json +1 -0
  23. package/data/yifenyiduan/jilin-2026-history.json +1 -0
  24. package/data/yifenyiduan/jilin-2026-physics.json +1 -0
  25. package/data/yifenyiduan/liaoning-2026-history.json +1 -0
  26. package/data/yifenyiduan/liaoning-2026-physics.json +1 -0
  27. package/data/yifenyiduan/ningxia-2026-history.json +1 -0
  28. package/data/yifenyiduan/ningxia-2026-physics.json +1 -0
  29. package/data/yifenyiduan/shaanxi-2026-history.json +1 -0
  30. package/data/yifenyiduan/shaanxi-2026-physics.json +1 -0
  31. package/data/yifenyiduan/shandong-2026-combined.json +1 -0
  32. package/data/yifenyiduan/shanxi-2026-history.json +1 -0
  33. package/data/yifenyiduan/shanxi-2026-physics.json +1 -0
  34. package/data/yifenyiduan/tianjin-2026-combined.json +1 -0
  35. package/dist/index.js +59 -16
  36. package/dist/rank-table.d.ts +19 -0
  37. package/dist/rank-table.js +41 -0
  38. package/package.json +1 -1
@@ -0,0 +1,174 @@
1
+ #!/usr/bin/env python3
2
+ """Parse the official 安徽 2026 成绩分档表 PDF (which HAS a real text layer,
3
+ extracted via `pdftotext -layout`) into RankTable JSON, enforcing the SAME
4
+ running-sum integrity gate as ingest-html.py.
5
+
6
+ The Anhui PDF lays out each page as 5 side-by-side column-groups, each
7
+ [分数, 人数, 累计人数], read top-to-bottom then left-to-right (descending score).
8
+ Pages 1-3 = 历史科目组合 (history), pages 4-6 = 物理科目组合 (physics).
9
+
10
+ We parse every (score, count, cumulative) triple, drop the suppressed
11
+ '200及以下 ... 略' tail bucket and 'X及以上' is kept as floor score, sort by score
12
+ descending, then run the identical validate() invariant: sum(count)==cumulative
13
+ at every row. A mis-parse breaks the gate, so nothing can be fabricated.
14
+ """
15
+ import json
16
+ import re
17
+ import subprocess
18
+ import sys
19
+ from pathlib import Path
20
+
21
+ DATA_DIR = Path(__file__).resolve().parent.parent # cli/data/yifenyiduan/
22
+
23
+
24
+ def validate(rows):
25
+ """Identical invariant to ingest-html.py: running-sum + strict descent."""
26
+ if len(rows) < 20:
27
+ raise ValueError(f"only {len(rows)} data rows parsed — not a full 一分一段表")
28
+ running = 0
29
+ prev_score = None
30
+ for i, r in enumerate(rows):
31
+ if r["count"] < 0:
32
+ raise ValueError(f"negative count at row {i} (score {r['score']})")
33
+ running += r["count"]
34
+ if running != r["cumulative"]:
35
+ raise ValueError(
36
+ f"running-sum mismatch at row {i} (score {r['score']}): "
37
+ f"sum(count)={running} != cumulative={r['cumulative']}")
38
+ if prev_score is not None and r["score"] >= prev_score:
39
+ raise ValueError(f"scores not strictly descending at row {i}: {prev_score} -> {r['score']}")
40
+ prev_score = r["score"]
41
+ return len(rows), rows[0], rows[-1]
42
+
43
+
44
+ def parse_score(tok):
45
+ """'671及以上' / '705及以上' -> floor int; plain '600' -> 600; else None."""
46
+ nums = re.findall(r"\d+", tok)
47
+ if not nums:
48
+ return None
49
+ return int(nums[0])
50
+
51
+
52
+ def extract_track(text, track_header_kw):
53
+ """text is full `pdftotext -layout` output. track_header_kw is e.g.
54
+ '历史科目组合' or '物理科目组合'. We only keep lines that belong to that track's
55
+ pages (between its header and the next track's header / EOF), then pull every
56
+ [score count cum] triple out of the 5-group rows."""
57
+ lines = text.splitlines()
58
+ # mark which lines fall under the target track header
59
+ in_track = False
60
+ rows = {}
61
+ for ln in lines:
62
+ if "科类:" in ln:
63
+ in_track = track_header_kw in ln
64
+ continue
65
+ if not in_track:
66
+ continue
67
+ # data line: contains many integers; strip the all-integer tokens out.
68
+ # First normalize: replace 'NNN及以上'/'NNN及以下' so the leading score parses.
69
+ # Tokenize on whitespace.
70
+ toks = ln.split()
71
+ # We walk tokens, grouping into (score, count, cum) triples. A group starts
72
+ # with a score token (either pure int in 195..760, or 'NNN及以上'). The next
73
+ # two tokens must be pure ints (count, cum). '略' / 'NNN及以下' terminate.
74
+ i = 0
75
+ while i < len(toks):
76
+ t = toks[i]
77
+ if "及以下" in t:
78
+ break # suppressed tail bucket for this row — stop this line
79
+ sc = None
80
+ if "及以上" in t:
81
+ sc = parse_score(t)
82
+ elif re.fullmatch(r"\d{3}", t) or re.fullmatch(r"\d{2,3}", t):
83
+ v = int(t)
84
+ if 195 <= v <= 760:
85
+ sc = v
86
+ if sc is None:
87
+ i += 1
88
+ continue
89
+ # need next two pure-int tokens
90
+ if i + 2 < len(toks) + 1 and i + 2 <= len(toks) - 1 + 1:
91
+ pass
92
+ if i + 2 <= len(toks) - 1:
93
+ c_tok, u_tok = toks[i + 1], toks[i + 2]
94
+ if re.fullmatch(r"\d+", c_tok) and re.fullmatch(r"\d+", u_tok):
95
+ count = int(c_tok)
96
+ cum = int(u_tok)
97
+ if sc not in rows: # dedupe (page header score repeats avoided)
98
+ rows[sc] = (count, cum)
99
+ i += 3
100
+ continue
101
+ i += 1
102
+ # to list, sorted by score descending
103
+ out = []
104
+ for sc in sorted(rows.keys(), reverse=True):
105
+ count, cum = rows[sc]
106
+ out.append({"score": sc, "count": count, "cumulative": cum})
107
+ return out
108
+
109
+
110
+ def main():
111
+ import argparse
112
+ ap = argparse.ArgumentParser()
113
+ ap.add_argument("--pdf", required=True)
114
+ ap.add_argument("--province", default="anhui")
115
+ ap.add_argument("--name", default="安徽")
116
+ ap.add_argument("--year", type=int, default=2026)
117
+ ap.add_argument("--track", required=True, help="physics|history")
118
+ ap.add_argument("--track-cn", required=True)
119
+ ap.add_argument("--track-header", required=True, help="物理科目组合|历史科目组合")
120
+ ap.add_argument("--url", required=True)
121
+ ap.add_argument("--check-score", type=int)
122
+ ap.add_argument("--check-cum", type=int)
123
+ ap.add_argument("--source-note", default="")
124
+ ap.add_argument("--out")
125
+ ap.add_argument("--write", action="store_true")
126
+ a = ap.parse_args()
127
+
128
+ text = subprocess.run(
129
+ ["pdftotext", "-layout", a.pdf, "-"],
130
+ check=True, capture_output=True, text=True).stdout
131
+
132
+ rows = extract_track(text, a.track_header)
133
+ try:
134
+ n, top, bottom = validate(rows)
135
+ except ValueError as e:
136
+ print(f"VALIDATE-FAIL {a.province}-{a.year}-{a.track}: {e}", file=sys.stderr)
137
+ sys.exit(3)
138
+
139
+ checkpoint_ok = "n/a"
140
+ if a.check_score is not None and a.check_cum is not None:
141
+ match = next((r for r in rows if r["score"] == a.check_score), None)
142
+ if match is None:
143
+ checkpoint_ok = f"WARN (no row at score {a.check_score})"
144
+ elif match["cumulative"] != a.check_cum:
145
+ checkpoint_ok = (f"WARN (table {a.check_score}->{match['cumulative']} "
146
+ f"vs official {a.check_cum}, diff {match['cumulative'] - a.check_cum})")
147
+ else:
148
+ checkpoint_ok = f"PASS ({a.check_score}->{a.check_cum})"
149
+
150
+ out = {
151
+ "province": a.province,
152
+ "province_name": a.name,
153
+ "year": a.year,
154
+ "track": a.track,
155
+ "track_cn": a.track_cn,
156
+ "source": "省考试院 / ahzsks.cn (成绩分档表 PDF 文本层)",
157
+ "source_url": a.url,
158
+ "note": a.source_note,
159
+ "count": n,
160
+ "rows": rows,
161
+ }
162
+
163
+ print(f"OK {a.province}-{a.year}-{a.track}: {n} rows, "
164
+ f"top {top['score']}->{top['cumulative']}, bottom {bottom['score']}->{bottom['cumulative']}, "
165
+ f"checkpoint {checkpoint_ok}")
166
+
167
+ if a.write:
168
+ path = Path(a.out) if a.out else DATA_DIR / f"{a.province}-{a.year}-{a.track}.json"
169
+ path.write_text(json.dumps(out, ensure_ascii=False), encoding="utf-8")
170
+ print(f"WROTE {path}")
171
+
172
+
173
+ if __name__ == "__main__":
174
+ main()
@@ -118,6 +118,48 @@ def extract_rows_trust_cumulative(htmltext: str):
118
118
  return rows
119
119
 
120
120
 
121
+ def extract_rows_multi_block_cumulative(htmltext: str):
122
+ """For 'newspaper-style' cumulative-only tables that pack MANY (分数段, 累计人数)
123
+ pairs side-by-side across a single <tr> (e.g. 宁夏 2026: each row holds ~6 blocks
124
+ 'NNN分 | cum | (spacer) | NNN分 | cum | ...'). We can't use fixed column indices
125
+ because the pairs repeat horizontally and rows wrap by column-block, not by score.
126
+
127
+ Strategy: scan EVERY cell of EVERY row across ALL tables; whenever a cell looks
128
+ like a score ('NNN分', not the '分数段 累计人数' header) take the NEXT non-empty
129
+ cell as that score's cumulative (位次). Collect into a score→cumulative map (last
130
+ write wins; duplicates are identical), then sort by descending score and DERIVE
131
+ count = cum[i] - cum[i-1]. The cumulative column is taken verbatim from the page;
132
+ only the unused per-segment count is synthesized so the file is self-consistent.
133
+ The running-sum + strictly-descending gates in validate() still apply, so a
134
+ mis-paired cell or a non-monotonic cumulative fails the gate rather than shipping."""
135
+ score_re = re.compile(r"\d+\s*分")
136
+ pairs = {} # score -> cumulative
137
+ for table in re.findall(r"<table.*?</table>", htmltext, re.S):
138
+ for tr in re.findall(r"<tr.*?</tr>", table, re.S):
139
+ cells = [cell_text(c) for c in re.findall(r"<t[dh][^>]*>(.*?)</t[dh]>", tr, re.S)]
140
+ i = 0
141
+ while i < len(cells):
142
+ c = cells[i]
143
+ if score_re.search(c) and "分数段" not in c:
144
+ score = parse_score(c)
145
+ j = i + 1
146
+ while j < len(cells) and cells[j].strip() == "":
147
+ j += 1
148
+ if j < len(cells):
149
+ cum = parse_int(cells[j])
150
+ if score is not None and cum is not None:
151
+ pairs[score] = cum
152
+ i = j
153
+ i += 1
154
+ rows = []
155
+ prev_cum = 0
156
+ for score in sorted(pairs, reverse=True):
157
+ cum = pairs[score]
158
+ rows.append({"score": score, "count": cum - prev_cum, "cumulative": cum})
159
+ prev_cum = cum
160
+ return rows
161
+
162
+
121
163
  def extract_rows_rank_range(htmltext: str):
122
164
  """For 3-col tables laid out as [分数, 位次区间, 同分人数] — e.g.
123
165
  '706~750 | 1~14 | 14' — where the cumulative (累计位次) is NOT its own
@@ -146,14 +188,22 @@ def extract_rows_rank_range(htmltext: str):
146
188
  return best
147
189
 
148
190
 
149
- def extract_rows_cols(htmltext: str, score_i: int, count_i: int, cum_i: int):
191
+ def extract_rows_cols(htmltext: str, score_i: int, count_i: int, cum_i: int, trust_cum: bool = False):
150
192
  """For tables whose 分数/人数/累计 live at FIXED (non-leading) column indices —
151
193
  e.g. 青海's [科类, 投档类型, 总分, 人数, 累计数] (cols 2,3,4) or 河北's side-by-side
152
194
  [分数, 物理人数, 物理累计, 历史人数, 历史累计] where physics=cols 0,1,2 and
153
195
  history=cols 0,3,4. Takes those three columns verbatim; rows whose selected cells
154
196
  don't parse (headers / notes / the empty other-track cells) are skipped. The
155
197
  running-sum gate in validate() independently re-derives sum(count)==cumulative,
156
- so a wrong column pick fails the gate rather than shipping bad data."""
198
+ so a wrong column pick fails the gate rather than shipping bad data.
199
+
200
+ With trust_cum=True (--cols + --trust-cumulative), the CUM column is taken
201
+ verbatim as the canonical 位次 and the per-segment count is DERIVED as
202
+ cum[i]-cum[i-1] instead of read from count_i. This handles side-by-side
203
+ official tables (e.g. 山东's [分数段, 全体本段人数, 全体累计, ...选考各科...])
204
+ whose TOP bucket merges '≥X' so its printed 本段人数 < its 累计 — the cumulative
205
+ is still exact, only the unused count column is synthesized so the file is
206
+ self-consistent. Rows are kept in served order; count uses the running diff."""
157
207
  need = max(score_i, count_i, cum_i)
158
208
  best = []
159
209
  for table in re.findall(r"<table.*?</table>", htmltext, re.S):
@@ -163,13 +213,25 @@ def extract_rows_cols(htmltext: str, score_i: int, count_i: int, cum_i: int):
163
213
  if len(cells) <= need:
164
214
  continue
165
215
  score = parse_score(cells[score_i])
166
- count = parse_int(cells[count_i])
167
216
  cum = parse_int(cells[cum_i])
168
- if score is None or count is None or cum is None:
169
- continue # header / note / empty other-track row
170
- parsed.append({"score": score, "count": count, "cumulative": cum})
217
+ if trust_cum:
218
+ if score is None or cum is None:
219
+ continue # header / note / empty other-track row
220
+ parsed.append({"score": score, "cumulative": cum})
221
+ else:
222
+ count = parse_int(cells[count_i])
223
+ if score is None or count is None or cum is None:
224
+ continue # header / note / empty other-track row
225
+ parsed.append({"score": score, "count": count, "cumulative": cum})
171
226
  if len(parsed) > len(best):
172
227
  best = parsed
228
+ if trust_cum:
229
+ rows = []
230
+ prev_cum = 0
231
+ for r in best:
232
+ rows.append({"score": r["score"], "count": r["cumulative"] - prev_cum, "cumulative": r["cumulative"]})
233
+ prev_cum = r["cumulative"]
234
+ return rows
173
235
  return best
174
236
 
175
237
 
@@ -217,6 +279,11 @@ def main():
217
279
  help="for [分数, 位次区间, 同分人数] tables: cumulative = END of the "
218
280
  "位次区间 range, count = 同分人数. Both columns taken verbatim; "
219
281
  "running-sum gate re-checks them (see extract_rows_rank_range).")
282
+ ap.add_argument("--multi-block-cumulative", action="store_true",
283
+ help="for newspaper-style cumulative-only tables packing many "
284
+ "(分数段, 累计人数) pairs side-by-side per row (e.g. 宁夏 2026): "
285
+ "scan all cells for 'NNN分'→next cumulative, sort desc, derive "
286
+ "count (see extract_rows_multi_block_cumulative).")
220
287
  ap.add_argument("--cols",
221
288
  help="comma-separated 0-based column indices SCORE,COUNT,CUM for tables "
222
289
  "where these aren't the first 3 cells — e.g. 青海 '2,3,4' (投档类型 "
@@ -253,7 +320,9 @@ def main():
253
320
  if len(idx) != 3:
254
321
  print(f"ARG-FAIL {a.province}-{a.year}-{a.track}: --cols needs 3 indices SCORE,COUNT,CUM", file=sys.stderr)
255
322
  sys.exit(4)
256
- rows = extract_rows_cols(htmltext, idx[0], idx[1], idx[2])
323
+ rows = extract_rows_cols(htmltext, idx[0], idx[1], idx[2], trust_cum=a.trust_cumulative)
324
+ elif a.multi_block_cumulative:
325
+ rows = extract_rows_multi_block_cumulative(htmltext)
257
326
  elif a.rank_range:
258
327
  rows = extract_rows_rank_range(htmltext)
259
328
  elif a.trust_cumulative:
@@ -292,6 +361,7 @@ def main():
292
361
  "note": (a.source_note
293
362
  + (";count 由 cumulative(位次) 反推(官方表为累计制/顶部分段合并)" if a.trust_cumulative else "")
294
363
  + (";cumulative 取自官方[位次区间]右端,count 取自[同分人数]列" if a.rank_range else "")
364
+ + (";官方表为横向多分段块累计制,按分数降序提取(分数段,累计人数)对、count 由 cumulative 反推" if a.multi_block_cumulative else "")
295
365
  + (f";分数/人数/累计取自官方表第 {a.cols} 列(含投档类型前缀/并排双轨版式)" if a.cols else "")).lstrip(";"),
296
366
  "count": n,
297
367
  "rows": rows,
@@ -0,0 +1,26 @@
1
+ import Foundation
2
+ import Vision
3
+ import AppKit
4
+
5
+ let path = CommandLine.arguments[1]
6
+ guard let img = NSImage(contentsOfFile: path),
7
+ let cg = img.cgImage(forProposedRect: nil, context: nil, hints: nil) else {
8
+ FileHandle.standardError.write("cannot load image\n".data(using:.utf8)!); exit(1)
9
+ }
10
+ let W = Double(cg.width), H = Double(cg.height)
11
+ let req = VNRecognizeTextRequest { request, _ in
12
+ guard let obs = request.results as? [VNRecognizedTextObservation] else { return }
13
+ var lines:[String]=[]
14
+ for o in obs {
15
+ guard let t = o.topCandidates(1).first else { continue }
16
+ let b = o.boundingBox // normalized, origin bottom-left
17
+ let x = b.minX*W, y = (1-b.maxY)*H, w = b.width*W, h = b.height*H
18
+ lines.append("\(t.string)\t\(Int(x))\t\(Int(y))\t\(Int(w))\t\(Int(h))")
19
+ }
20
+ print(lines.joined(separator:"\n"))
21
+ }
22
+ req.recognitionLevel = .accurate
23
+ req.usesLanguageCorrection = false
24
+ req.recognitionLanguages = ["zh-Hans","en"]
25
+ let handler = VNImageRequestHandler(cgImage: cg, options: [:])
26
+ try? handler.perform([req])
@@ -0,0 +1 @@
1
+ {"province": "anhui", "province_name": "安徽", "year": 2026, "track": "history", "track_cn": "历史类", "source": "省考试院 / ahzsks.cn (成绩分档表 PDF 文本层)", "source_url": "https://www.ahzsks.cn/ggl/8996.htm", "note": "安徽 2026 3+1+2 历史科目组合 全表 (ahzsks.cn 成绩分档表 PDF 文本层, 含加分);末尾 200及以下 官方标注'略'故不含", "count": 471, "rows": [{"score": 671, "count": 10, "cumulative": 10}, {"score": 670, "count": 1, "cumulative": 11}, {"score": 669, "count": 3, "cumulative": 14}, {"score": 668, "count": 3, "cumulative": 17}, {"score": 667, "count": 1, "cumulative": 18}, {"score": 666, "count": 4, "cumulative": 22}, {"score": 665, "count": 2, "cumulative": 24}, {"score": 664, "count": 6, "cumulative": 30}, {"score": 663, "count": 8, "cumulative": 38}, {"score": 662, "count": 4, "cumulative": 42}, {"score": 661, "count": 4, "cumulative": 46}, {"score": 660, "count": 4, "cumulative": 50}, {"score": 659, "count": 5, "cumulative": 55}, {"score": 658, "count": 3, "cumulative": 58}, {"score": 657, "count": 4, "cumulative": 62}, {"score": 656, "count": 7, "cumulative": 69}, {"score": 655, "count": 4, "cumulative": 73}, {"score": 654, "count": 7, "cumulative": 80}, {"score": 653, "count": 7, "cumulative": 87}, {"score": 652, "count": 7, "cumulative": 94}, {"score": 651, "count": 11, "cumulative": 105}, {"score": 650, "count": 9, "cumulative": 114}, {"score": 649, "count": 4, "cumulative": 118}, {"score": 648, "count": 14, "cumulative": 132}, {"score": 647, "count": 12, "cumulative": 144}, {"score": 646, "count": 18, "cumulative": 162}, {"score": 645, "count": 19, "cumulative": 181}, {"score": 644, "count": 15, "cumulative": 196}, {"score": 643, "count": 23, "cumulative": 219}, {"score": 642, "count": 13, "cumulative": 232}, {"score": 641, "count": 20, "cumulative": 252}, {"score": 640, "count": 16, "cumulative": 268}, {"score": 639, "count": 21, "cumulative": 289}, {"score": 638, "count": 27, "cumulative": 316}, {"score": 637, "count": 27, "cumulative": 343}, {"score": 636, "count": 22, "cumulative": 365}, {"score": 635, "count": 25, "cumulative": 390}, {"score": 634, "count": 28, "cumulative": 418}, {"score": 633, "count": 39, "cumulative": 457}, {"score": 632, "count": 37, "cumulative": 494}, {"score": 631, "count": 30, "cumulative": 524}, {"score": 630, "count": 46, "cumulative": 570}, {"score": 629, "count": 46, "cumulative": 616}, {"score": 628, "count": 56, "cumulative": 672}, {"score": 627, "count": 59, "cumulative": 731}, {"score": 626, "count": 55, "cumulative": 786}, {"score": 625, "count": 49, "cumulative": 835}, {"score": 624, "count": 59, "cumulative": 894}, {"score": 623, "count": 68, "cumulative": 962}, {"score": 622, "count": 59, "cumulative": 1021}, {"score": 621, "count": 74, "cumulative": 1095}, {"score": 620, "count": 71, "cumulative": 1166}, {"score": 619, "count": 61, "cumulative": 1227}, {"score": 618, "count": 75, "cumulative": 1302}, {"score": 617, "count": 66, "cumulative": 1368}, {"score": 616, "count": 68, "cumulative": 1436}, {"score": 615, "count": 94, "cumulative": 1530}, {"score": 614, "count": 82, "cumulative": 1612}, {"score": 613, "count": 77, "cumulative": 1689}, {"score": 612, "count": 85, "cumulative": 1774}, {"score": 611, "count": 85, "cumulative": 1859}, {"score": 610, "count": 112, "cumulative": 1971}, {"score": 609, "count": 89, "cumulative": 2060}, {"score": 608, "count": 105, "cumulative": 2165}, {"score": 607, "count": 109, "cumulative": 2274}, {"score": 606, "count": 106, "cumulative": 2380}, {"score": 605, "count": 116, "cumulative": 2496}, {"score": 604, "count": 116, "cumulative": 2612}, {"score": 603, "count": 126, "cumulative": 2738}, {"score": 602, "count": 133, "cumulative": 2871}, {"score": 601, "count": 128, "cumulative": 2999}, {"score": 600, "count": 122, "cumulative": 3121}, {"score": 599, "count": 140, "cumulative": 3261}, {"score": 598, "count": 119, "cumulative": 3380}, {"score": 597, "count": 130, "cumulative": 3510}, {"score": 596, "count": 140, "cumulative": 3650}, {"score": 595, "count": 153, "cumulative": 3803}, {"score": 594, "count": 167, "cumulative": 3970}, {"score": 593, "count": 165, "cumulative": 4135}, {"score": 592, "count": 156, "cumulative": 4291}, {"score": 591, "count": 168, "cumulative": 4459}, {"score": 590, "count": 161, "cumulative": 4620}, {"score": 589, "count": 182, "cumulative": 4802}, {"score": 588, "count": 167, "cumulative": 4969}, {"score": 587, "count": 156, "cumulative": 5125}, {"score": 586, "count": 183, "cumulative": 5308}, {"score": 585, "count": 189, "cumulative": 5497}, {"score": 584, "count": 205, "cumulative": 5702}, {"score": 583, "count": 184, "cumulative": 5886}, {"score": 582, "count": 217, "cumulative": 6103}, {"score": 581, "count": 195, "cumulative": 6298}, {"score": 580, "count": 214, "cumulative": 6512}, {"score": 579, "count": 237, "cumulative": 6749}, {"score": 578, "count": 216, "cumulative": 6965}, {"score": 577, "count": 236, "cumulative": 7201}, {"score": 576, "count": 235, "cumulative": 7436}, {"score": 575, "count": 213, "cumulative": 7649}, {"score": 574, "count": 251, "cumulative": 7900}, {"score": 573, "count": 226, "cumulative": 8126}, {"score": 572, "count": 241, "cumulative": 8367}, {"score": 571, "count": 258, "cumulative": 8625}, {"score": 570, "count": 255, "cumulative": 8880}, {"score": 569, "count": 275, "cumulative": 9155}, {"score": 568, "count": 256, "cumulative": 9411}, {"score": 567, "count": 272, "cumulative": 9683}, {"score": 566, "count": 261, "cumulative": 9944}, {"score": 565, "count": 264, "cumulative": 10208}, {"score": 564, "count": 264, "cumulative": 10472}, {"score": 563, "count": 289, "cumulative": 10761}, {"score": 562, "count": 301, "cumulative": 11062}, {"score": 561, "count": 281, "cumulative": 11343}, {"score": 560, "count": 285, "cumulative": 11628}, {"score": 559, "count": 311, "cumulative": 11939}, {"score": 558, "count": 315, "cumulative": 12254}, {"score": 557, "count": 306, "cumulative": 12560}, {"score": 556, "count": 294, "cumulative": 12854}, {"score": 555, "count": 336, "cumulative": 13190}, {"score": 554, "count": 361, "cumulative": 13551}, {"score": 553, "count": 316, "cumulative": 13867}, {"score": 552, "count": 370, "cumulative": 14237}, {"score": 551, "count": 351, "cumulative": 14588}, {"score": 550, "count": 363, "cumulative": 14951}, {"score": 549, "count": 400, "cumulative": 15351}, {"score": 548, "count": 349, "cumulative": 15700}, {"score": 547, "count": 384, "cumulative": 16084}, {"score": 546, "count": 327, "cumulative": 16411}, {"score": 545, "count": 351, "cumulative": 16762}, {"score": 544, "count": 381, "cumulative": 17143}, {"score": 543, "count": 410, "cumulative": 17553}, {"score": 542, "count": 444, "cumulative": 17997}, {"score": 541, "count": 426, "cumulative": 18423}, {"score": 540, "count": 387, "cumulative": 18810}, {"score": 539, "count": 402, "cumulative": 19212}, {"score": 538, "count": 386, "cumulative": 19598}, {"score": 537, "count": 436, "cumulative": 20034}, {"score": 536, "count": 422, "cumulative": 20456}, {"score": 535, "count": 443, "cumulative": 20899}, {"score": 534, "count": 461, "cumulative": 21360}, {"score": 533, "count": 439, "cumulative": 21799}, {"score": 532, "count": 477, "cumulative": 22276}, {"score": 531, "count": 505, "cumulative": 22781}, {"score": 530, "count": 504, "cumulative": 23285}, {"score": 529, "count": 461, "cumulative": 23746}, {"score": 528, "count": 459, "cumulative": 24205}, {"score": 527, "count": 456, "cumulative": 24661}, {"score": 526, "count": 503, "cumulative": 25164}, {"score": 525, "count": 447, "cumulative": 25611}, {"score": 524, "count": 484, "cumulative": 26095}, {"score": 523, "count": 456, "cumulative": 26551}, {"score": 522, "count": 482, "cumulative": 27033}, {"score": 521, "count": 522, "cumulative": 27555}, {"score": 520, "count": 512, "cumulative": 28067}, {"score": 519, "count": 519, "cumulative": 28586}, {"score": 518, "count": 507, "cumulative": 29093}, {"score": 517, "count": 478, "cumulative": 29571}, {"score": 516, "count": 528, "cumulative": 30099}, {"score": 515, "count": 541, "cumulative": 30640}, {"score": 514, "count": 560, "cumulative": 31200}, {"score": 513, "count": 555, "cumulative": 31755}, {"score": 512, "count": 546, "cumulative": 32301}, {"score": 511, "count": 546, "cumulative": 32847}, {"score": 510, "count": 550, "cumulative": 33397}, {"score": 509, "count": 581, "cumulative": 33978}, {"score": 508, "count": 519, "cumulative": 34497}, {"score": 507, "count": 578, "cumulative": 35075}, {"score": 506, "count": 547, "cumulative": 35622}, {"score": 505, "count": 545, "cumulative": 36167}, {"score": 504, "count": 548, "cumulative": 36715}, {"score": 503, "count": 560, "cumulative": 37275}, {"score": 502, "count": 620, "cumulative": 37895}, {"score": 501, "count": 570, "cumulative": 38465}, {"score": 500, "count": 573, "cumulative": 39038}, {"score": 499, "count": 559, "cumulative": 39597}, {"score": 498, "count": 604, "cumulative": 40201}, {"score": 497, "count": 585, "cumulative": 40786}, {"score": 496, "count": 583, "cumulative": 41369}, {"score": 495, "count": 567, "cumulative": 41936}, {"score": 494, "count": 613, "cumulative": 42549}, {"score": 493, "count": 583, "cumulative": 43132}, {"score": 492, "count": 559, "cumulative": 43691}, {"score": 491, "count": 579, "cumulative": 44270}, {"score": 490, "count": 576, "cumulative": 44846}, {"score": 489, "count": 601, "cumulative": 45447}, {"score": 488, "count": 577, "cumulative": 46024}, {"score": 487, "count": 594, "cumulative": 46618}, {"score": 486, "count": 594, "cumulative": 47212}, {"score": 485, "count": 573, "cumulative": 47785}, {"score": 484, "count": 597, "cumulative": 48382}, {"score": 483, "count": 599, "cumulative": 48981}, {"score": 482, "count": 611, "cumulative": 49592}, {"score": 481, "count": 554, "cumulative": 50146}, {"score": 480, "count": 575, "cumulative": 50721}, {"score": 479, "count": 592, "cumulative": 51313}, {"score": 478, "count": 605, "cumulative": 51918}, {"score": 477, "count": 618, "cumulative": 52536}, {"score": 476, "count": 608, "cumulative": 53144}, {"score": 475, "count": 558, "cumulative": 53702}, {"score": 474, "count": 621, "cumulative": 54323}, {"score": 473, "count": 561, "cumulative": 54884}, {"score": 472, "count": 571, "cumulative": 55455}, {"score": 471, "count": 569, "cumulative": 56024}, {"score": 470, "count": 632, "cumulative": 56656}, {"score": 469, "count": 599, "cumulative": 57255}, {"score": 468, "count": 578, "cumulative": 57833}, {"score": 467, "count": 586, "cumulative": 58419}, {"score": 466, "count": 604, "cumulative": 59023}, {"score": 465, "count": 588, "cumulative": 59611}, {"score": 464, "count": 607, "cumulative": 60218}, {"score": 463, "count": 615, "cumulative": 60833}, {"score": 462, "count": 583, "cumulative": 61416}, {"score": 461, "count": 590, "cumulative": 62006}, {"score": 460, "count": 616, "cumulative": 62622}, {"score": 459, "count": 611, "cumulative": 63233}, {"score": 458, "count": 601, "cumulative": 63834}, {"score": 457, "count": 624, "cumulative": 64458}, {"score": 456, "count": 593, "cumulative": 65051}, {"score": 455, "count": 601, "cumulative": 65652}, {"score": 454, "count": 554, "cumulative": 66206}, {"score": 453, "count": 600, "cumulative": 66806}, {"score": 452, "count": 593, "cumulative": 67399}, {"score": 451, "count": 617, "cumulative": 68016}, {"score": 450, "count": 599, "cumulative": 68615}, {"score": 449, "count": 596, "cumulative": 69211}, {"score": 448, "count": 601, "cumulative": 69812}, {"score": 447, "count": 606, "cumulative": 70418}, {"score": 446, "count": 554, "cumulative": 70972}, {"score": 445, "count": 621, "cumulative": 71593}, {"score": 444, "count": 598, "cumulative": 72191}, {"score": 443, "count": 613, "cumulative": 72804}, {"score": 442, "count": 631, "cumulative": 73435}, {"score": 441, "count": 569, "cumulative": 74004}, {"score": 440, "count": 590, "cumulative": 74594}, {"score": 439, "count": 604, "cumulative": 75198}, {"score": 438, "count": 550, "cumulative": 75748}, {"score": 437, "count": 592, "cumulative": 76340}, {"score": 436, "count": 571, "cumulative": 76911}, {"score": 435, "count": 577, "cumulative": 77488}, {"score": 434, "count": 617, "cumulative": 78105}, {"score": 433, "count": 588, "cumulative": 78693}, {"score": 432, "count": 569, "cumulative": 79262}, {"score": 431, "count": 615, "cumulative": 79877}, {"score": 430, "count": 629, "cumulative": 80506}, {"score": 429, "count": 605, "cumulative": 81111}, {"score": 428, "count": 575, "cumulative": 81686}, {"score": 427, "count": 577, "cumulative": 82263}, {"score": 426, "count": 576, "cumulative": 82839}, {"score": 425, "count": 554, "cumulative": 83393}, {"score": 424, "count": 611, "cumulative": 84004}, {"score": 423, "count": 552, "cumulative": 84556}, {"score": 422, "count": 620, "cumulative": 85176}, {"score": 421, "count": 575, "cumulative": 85751}, {"score": 420, "count": 645, "cumulative": 86396}, {"score": 419, "count": 606, "cumulative": 87002}, {"score": 418, "count": 600, "cumulative": 87602}, {"score": 417, "count": 590, "cumulative": 88192}, {"score": 416, "count": 563, "cumulative": 88755}, {"score": 415, "count": 577, "cumulative": 89332}, {"score": 414, "count": 589, "cumulative": 89921}, {"score": 413, "count": 614, "cumulative": 90535}, {"score": 412, "count": 570, "cumulative": 91105}, {"score": 411, "count": 587, "cumulative": 91692}, {"score": 410, "count": 589, "cumulative": 92281}, {"score": 409, "count": 593, "cumulative": 92874}, {"score": 408, "count": 624, "cumulative": 93498}, {"score": 407, "count": 609, "cumulative": 94107}, {"score": 406, "count": 558, "cumulative": 94665}, {"score": 405, "count": 552, "cumulative": 95217}, {"score": 404, "count": 598, "cumulative": 95815}, {"score": 403, "count": 563, "cumulative": 96378}, {"score": 402, "count": 601, "cumulative": 96979}, {"score": 401, "count": 582, "cumulative": 97561}, {"score": 400, "count": 619, "cumulative": 98180}, {"score": 399, "count": 556, "cumulative": 98736}, {"score": 398, "count": 536, "cumulative": 99272}, {"score": 397, "count": 530, "cumulative": 99802}, {"score": 396, "count": 566, "cumulative": 100368}, {"score": 395, "count": 574, "cumulative": 100942}, {"score": 394, "count": 619, "cumulative": 101561}, {"score": 393, "count": 603, "cumulative": 102164}, {"score": 392, "count": 527, "cumulative": 102691}, {"score": 391, "count": 553, "cumulative": 103244}, {"score": 390, "count": 548, "cumulative": 103792}, {"score": 389, "count": 559, "cumulative": 104351}, {"score": 388, "count": 614, "cumulative": 104965}, {"score": 387, "count": 567, "cumulative": 105532}, {"score": 386, "count": 556, "cumulative": 106088}, {"score": 385, "count": 609, "cumulative": 106697}, {"score": 384, "count": 583, "cumulative": 107280}, {"score": 383, "count": 532, "cumulative": 107812}, {"score": 382, "count": 521, "cumulative": 108333}, {"score": 381, "count": 545, "cumulative": 108878}, {"score": 380, "count": 499, "cumulative": 109377}, {"score": 379, "count": 558, "cumulative": 109935}, {"score": 378, "count": 569, "cumulative": 110504}, {"score": 377, "count": 555, "cumulative": 111059}, {"score": 376, "count": 528, "cumulative": 111587}, {"score": 375, "count": 572, "cumulative": 112159}, {"score": 374, "count": 557, "cumulative": 112716}, {"score": 373, "count": 520, "cumulative": 113236}, {"score": 372, "count": 545, "cumulative": 113781}, {"score": 371, "count": 536, "cumulative": 114317}, {"score": 370, "count": 494, "cumulative": 114811}, {"score": 369, "count": 493, "cumulative": 115304}, {"score": 368, "count": 497, "cumulative": 115801}, {"score": 367, "count": 511, "cumulative": 116312}, {"score": 366, "count": 490, "cumulative": 116802}, {"score": 365, "count": 522, "cumulative": 117324}, {"score": 364, "count": 504, "cumulative": 117828}, {"score": 363, "count": 509, "cumulative": 118337}, {"score": 362, "count": 513, "cumulative": 118850}, {"score": 361, "count": 494, "cumulative": 119344}, {"score": 360, "count": 525, "cumulative": 119869}, {"score": 359, "count": 503, "cumulative": 120372}, {"score": 358, "count": 508, "cumulative": 120880}, {"score": 357, "count": 498, "cumulative": 121378}, {"score": 356, "count": 479, "cumulative": 121857}, {"score": 355, "count": 487, "cumulative": 122344}, {"score": 354, "count": 499, "cumulative": 122843}, {"score": 353, "count": 491, "cumulative": 123334}, {"score": 352, "count": 488, "cumulative": 123822}, {"score": 351, "count": 511, "cumulative": 124333}, {"score": 350, "count": 489, "cumulative": 124822}, {"score": 349, "count": 448, "cumulative": 125270}, {"score": 348, "count": 483, "cumulative": 125753}, {"score": 347, "count": 397, "cumulative": 126150}, {"score": 346, "count": 447, "cumulative": 126597}, {"score": 345, "count": 479, "cumulative": 127076}, {"score": 344, "count": 440, "cumulative": 127516}, {"score": 343, "count": 430, "cumulative": 127946}, {"score": 342, "count": 444, "cumulative": 128390}, {"score": 341, "count": 417, "cumulative": 128807}, {"score": 340, "count": 443, "cumulative": 129250}, {"score": 339, "count": 450, "cumulative": 129700}, {"score": 338, "count": 442, "cumulative": 130142}, {"score": 337, "count": 433, "cumulative": 130575}, {"score": 336, "count": 404, "cumulative": 130979}, {"score": 335, "count": 437, "cumulative": 131416}, {"score": 334, "count": 401, "cumulative": 131817}, {"score": 333, "count": 402, "cumulative": 132219}, {"score": 332, "count": 433, "cumulative": 132652}, {"score": 331, "count": 387, "cumulative": 133039}, {"score": 330, "count": 369, "cumulative": 133408}, {"score": 329, "count": 353, "cumulative": 133761}, {"score": 328, "count": 376, "cumulative": 134137}, {"score": 327, "count": 397, "cumulative": 134534}, {"score": 326, "count": 399, "cumulative": 134933}, {"score": 325, "count": 421, "cumulative": 135354}, {"score": 324, "count": 359, "cumulative": 135713}, {"score": 323, "count": 370, "cumulative": 136083}, {"score": 322, "count": 361, "cumulative": 136444}, {"score": 321, "count": 346, "cumulative": 136790}, {"score": 320, "count": 336, "cumulative": 137126}, {"score": 319, "count": 376, "cumulative": 137502}, {"score": 318, "count": 359, "cumulative": 137861}, {"score": 317, "count": 370, "cumulative": 138231}, {"score": 316, "count": 338, "cumulative": 138569}, {"score": 315, "count": 330, "cumulative": 138899}, {"score": 314, "count": 345, "cumulative": 139244}, {"score": 313, "count": 330, "cumulative": 139574}, {"score": 312, "count": 335, "cumulative": 139909}, {"score": 311, "count": 330, "cumulative": 140239}, {"score": 310, "count": 302, "cumulative": 140541}, {"score": 309, "count": 324, "cumulative": 140865}, {"score": 308, "count": 295, "cumulative": 141160}, {"score": 307, "count": 339, "cumulative": 141499}, {"score": 306, "count": 321, "cumulative": 141820}, {"score": 305, "count": 283, "cumulative": 142103}, {"score": 304, "count": 302, "cumulative": 142405}, {"score": 303, "count": 292, "cumulative": 142697}, {"score": 302, "count": 290, "cumulative": 142987}, {"score": 301, "count": 304, "cumulative": 143291}, {"score": 300, "count": 277, "cumulative": 143568}, {"score": 299, "count": 275, "cumulative": 143843}, {"score": 298, "count": 291, "cumulative": 144134}, {"score": 297, "count": 274, "cumulative": 144408}, {"score": 296, "count": 247, "cumulative": 144655}, {"score": 295, "count": 274, "cumulative": 144929}, {"score": 294, "count": 269, "cumulative": 145198}, {"score": 293, "count": 259, "cumulative": 145457}, {"score": 292, "count": 288, "cumulative": 145745}, {"score": 291, "count": 274, "cumulative": 146019}, {"score": 290, "count": 257, "cumulative": 146276}, {"score": 289, "count": 265, "cumulative": 146541}, {"score": 288, "count": 231, "cumulative": 146772}, {"score": 287, "count": 255, "cumulative": 147027}, {"score": 286, "count": 226, "cumulative": 147253}, {"score": 285, "count": 239, "cumulative": 147492}, {"score": 284, "count": 232, "cumulative": 147724}, {"score": 283, "count": 212, "cumulative": 147936}, {"score": 282, "count": 232, "cumulative": 148168}, {"score": 281, "count": 225, "cumulative": 148393}, {"score": 280, "count": 216, "cumulative": 148609}, {"score": 279, "count": 241, "cumulative": 148850}, {"score": 278, "count": 236, "cumulative": 149086}, {"score": 277, "count": 219, "cumulative": 149305}, {"score": 276, "count": 214, "cumulative": 149519}, {"score": 275, "count": 223, "cumulative": 149742}, {"score": 274, "count": 199, "cumulative": 149941}, {"score": 273, "count": 205, "cumulative": 150146}, {"score": 272, "count": 201, "cumulative": 150347}, {"score": 271, "count": 198, "cumulative": 150545}, {"score": 270, "count": 176, "cumulative": 150721}, {"score": 269, "count": 188, "cumulative": 150909}, {"score": 268, "count": 200, "cumulative": 151109}, {"score": 267, "count": 209, "cumulative": 151318}, {"score": 266, "count": 203, "cumulative": 151521}, {"score": 265, "count": 178, "cumulative": 151699}, {"score": 264, "count": 192, "cumulative": 151891}, {"score": 263, "count": 199, "cumulative": 152090}, {"score": 262, "count": 176, "cumulative": 152266}, {"score": 261, "count": 191, "cumulative": 152457}, {"score": 260, "count": 179, "cumulative": 152636}, {"score": 259, "count": 175, "cumulative": 152811}, {"score": 258, "count": 176, "cumulative": 152987}, {"score": 257, "count": 164, "cumulative": 153151}, {"score": 256, "count": 198, "cumulative": 153349}, {"score": 255, "count": 137, "cumulative": 153486}, {"score": 254, "count": 171, "cumulative": 153657}, {"score": 253, "count": 143, "cumulative": 153800}, {"score": 252, "count": 141, "cumulative": 153941}, {"score": 251, "count": 142, "cumulative": 154083}, {"score": 250, "count": 137, "cumulative": 154220}, {"score": 249, "count": 159, "cumulative": 154379}, {"score": 248, "count": 158, "cumulative": 154537}, {"score": 247, "count": 151, "cumulative": 154688}, {"score": 246, "count": 163, "cumulative": 154851}, {"score": 245, "count": 154, "cumulative": 155005}, {"score": 244, "count": 155, "cumulative": 155160}, {"score": 243, "count": 149, "cumulative": 155309}, {"score": 242, "count": 130, "cumulative": 155439}, {"score": 241, "count": 144, "cumulative": 155583}, {"score": 240, "count": 131, "cumulative": 155714}, {"score": 239, "count": 142, "cumulative": 155856}, {"score": 238, "count": 126, "cumulative": 155982}, {"score": 237, "count": 133, "cumulative": 156115}, {"score": 236, "count": 135, "cumulative": 156250}, {"score": 235, "count": 102, "cumulative": 156352}, {"score": 234, "count": 129, "cumulative": 156481}, {"score": 233, "count": 106, "cumulative": 156587}, {"score": 232, "count": 113, "cumulative": 156700}, {"score": 231, "count": 99, "cumulative": 156799}, {"score": 230, "count": 100, "cumulative": 156899}, {"score": 229, "count": 94, "cumulative": 156993}, {"score": 228, "count": 109, "cumulative": 157102}, {"score": 227, "count": 99, "cumulative": 157201}, {"score": 226, "count": 128, "cumulative": 157329}, {"score": 225, "count": 101, "cumulative": 157430}, {"score": 224, "count": 96, "cumulative": 157526}, {"score": 223, "count": 86, "cumulative": 157612}, {"score": 222, "count": 99, "cumulative": 157711}, {"score": 221, "count": 95, "cumulative": 157806}, {"score": 220, "count": 81, "cumulative": 157887}, {"score": 219, "count": 88, "cumulative": 157975}, {"score": 218, "count": 69, "cumulative": 158044}, {"score": 217, "count": 76, "cumulative": 158120}, {"score": 216, "count": 81, "cumulative": 158201}, {"score": 215, "count": 81, "cumulative": 158282}, {"score": 214, "count": 82, "cumulative": 158364}, {"score": 213, "count": 83, "cumulative": 158447}, {"score": 212, "count": 62, "cumulative": 158509}, {"score": 211, "count": 55, "cumulative": 158564}, {"score": 210, "count": 48, "cumulative": 158612}, {"score": 209, "count": 59, "cumulative": 158671}, {"score": 208, "count": 62, "cumulative": 158733}, {"score": 207, "count": 58, "cumulative": 158791}, {"score": 206, "count": 47, "cumulative": 158838}, {"score": 205, "count": 46, "cumulative": 158884}, {"score": 204, "count": 48, "cumulative": 158932}, {"score": 203, "count": 44, "cumulative": 158976}, {"score": 202, "count": 39, "cumulative": 159015}, {"score": 201, "count": 44, "cumulative": 159059}]}
@@ -0,0 +1 @@
1
+ {"province": "anhui", "province_name": "安徽", "year": 2026, "track": "physics", "track_cn": "物理类", "source": "省考试院 / ahzsks.cn (成绩分档表 PDF 文本层)", "source_url": "https://www.ahzsks.cn/ggl/8996.htm", "note": "安徽 2026 3+1+2 物理科目组合 全表 (ahzsks.cn 成绩分档表 PDF 文本层, 含加分);末尾 200及以下 官方标注'略'故不含", "count": 505, "rows": [{"score": 705, "count": 18, "cumulative": 18}, {"score": 704, "count": 6, "cumulative": 24}, {"score": 703, "count": 11, "cumulative": 35}, {"score": 702, "count": 11, "cumulative": 46}, {"score": 701, "count": 8, "cumulative": 54}, {"score": 700, "count": 15, "cumulative": 69}, {"score": 699, "count": 6, "cumulative": 75}, {"score": 698, "count": 14, "cumulative": 89}, {"score": 697, "count": 15, "cumulative": 104}, {"score": 696, "count": 15, "cumulative": 119}, {"score": 695, "count": 21, "cumulative": 140}, {"score": 694, "count": 30, "cumulative": 170}, {"score": 693, "count": 24, "cumulative": 194}, {"score": 692, "count": 36, "cumulative": 230}, {"score": 691, "count": 31, "cumulative": 261}, {"score": 690, "count": 44, "cumulative": 305}, {"score": 689, "count": 48, "cumulative": 353}, {"score": 688, "count": 47, "cumulative": 400}, {"score": 687, "count": 55, "cumulative": 455}, {"score": 686, "count": 49, "cumulative": 504}, {"score": 685, "count": 62, "cumulative": 566}, {"score": 684, "count": 64, "cumulative": 630}, {"score": 683, "count": 72, "cumulative": 702}, {"score": 682, "count": 63, "cumulative": 765}, {"score": 681, "count": 74, "cumulative": 839}, {"score": 680, "count": 79, "cumulative": 918}, {"score": 679, "count": 82, "cumulative": 1000}, {"score": 678, "count": 97, "cumulative": 1097}, {"score": 677, "count": 92, "cumulative": 1189}, {"score": 676, "count": 103, "cumulative": 1292}, {"score": 675, "count": 113, "cumulative": 1405}, {"score": 674, "count": 124, "cumulative": 1529}, {"score": 673, "count": 115, "cumulative": 1644}, {"score": 672, "count": 135, "cumulative": 1779}, {"score": 671, "count": 119, "cumulative": 1898}, {"score": 670, "count": 165, "cumulative": 2063}, {"score": 669, "count": 164, "cumulative": 2227}, {"score": 668, "count": 170, "cumulative": 2397}, {"score": 667, "count": 159, "cumulative": 2556}, {"score": 666, "count": 179, "cumulative": 2735}, {"score": 665, "count": 162, "cumulative": 2897}, {"score": 664, "count": 158, "cumulative": 3055}, {"score": 663, "count": 173, "cumulative": 3228}, {"score": 662, "count": 180, "cumulative": 3408}, {"score": 661, "count": 169, "cumulative": 3577}, {"score": 660, "count": 203, "cumulative": 3780}, {"score": 659, "count": 195, "cumulative": 3975}, {"score": 658, "count": 219, "cumulative": 4194}, {"score": 657, "count": 216, "cumulative": 4410}, {"score": 656, "count": 230, "cumulative": 4640}, {"score": 655, "count": 242, "cumulative": 4882}, {"score": 654, "count": 264, "cumulative": 5146}, {"score": 653, "count": 225, "cumulative": 5371}, {"score": 652, "count": 253, "cumulative": 5624}, {"score": 651, "count": 264, "cumulative": 5888}, {"score": 650, "count": 302, "cumulative": 6190}, {"score": 649, "count": 277, "cumulative": 6467}, {"score": 648, "count": 281, "cumulative": 6748}, {"score": 647, "count": 262, "cumulative": 7010}, {"score": 646, "count": 329, "cumulative": 7339}, {"score": 645, "count": 301, "cumulative": 7640}, {"score": 644, "count": 314, "cumulative": 7954}, {"score": 643, "count": 300, "cumulative": 8254}, {"score": 642, "count": 316, "cumulative": 8570}, {"score": 641, "count": 369, "cumulative": 8939}, {"score": 640, "count": 364, "cumulative": 9303}, {"score": 639, "count": 348, "cumulative": 9651}, {"score": 638, "count": 345, "cumulative": 9996}, {"score": 637, "count": 389, "cumulative": 10385}, {"score": 636, "count": 371, "cumulative": 10756}, {"score": 635, "count": 369, "cumulative": 11125}, {"score": 634, "count": 387, "cumulative": 11512}, {"score": 633, "count": 389, "cumulative": 11901}, {"score": 632, "count": 402, "cumulative": 12303}, {"score": 631, "count": 397, "cumulative": 12700}, {"score": 630, "count": 444, "cumulative": 13144}, {"score": 629, "count": 426, "cumulative": 13570}, {"score": 628, "count": 453, "cumulative": 14023}, {"score": 627, "count": 458, "cumulative": 14481}, {"score": 626, "count": 456, "cumulative": 14937}, {"score": 625, "count": 453, "cumulative": 15390}, {"score": 624, "count": 443, "cumulative": 15833}, {"score": 623, "count": 459, "cumulative": 16292}, {"score": 622, "count": 452, "cumulative": 16744}, {"score": 621, "count": 529, "cumulative": 17273}, {"score": 620, "count": 515, "cumulative": 17788}, {"score": 619, "count": 496, "cumulative": 18284}, {"score": 618, "count": 555, "cumulative": 18839}, {"score": 617, "count": 515, "cumulative": 19354}, {"score": 616, "count": 508, "cumulative": 19862}, {"score": 615, "count": 532, "cumulative": 20394}, {"score": 614, "count": 530, "cumulative": 20924}, {"score": 613, "count": 546, "cumulative": 21470}, {"score": 612, "count": 535, "cumulative": 22005}, {"score": 611, "count": 586, "cumulative": 22591}, {"score": 610, "count": 570, "cumulative": 23161}, {"score": 609, "count": 550, "cumulative": 23711}, {"score": 608, "count": 578, "cumulative": 24289}, {"score": 607, "count": 592, "cumulative": 24881}, {"score": 606, "count": 605, "cumulative": 25486}, {"score": 605, "count": 596, "cumulative": 26082}, {"score": 604, "count": 590, "cumulative": 26672}, {"score": 603, "count": 596, "cumulative": 27268}, {"score": 602, "count": 659, "cumulative": 27927}, {"score": 601, "count": 672, "cumulative": 28599}, {"score": 600, "count": 674, "cumulative": 29273}, {"score": 599, "count": 630, "cumulative": 29903}, {"score": 598, "count": 637, "cumulative": 30540}, {"score": 597, "count": 699, "cumulative": 31239}, {"score": 596, "count": 656, "cumulative": 31895}, {"score": 595, "count": 725, "cumulative": 32620}, {"score": 594, "count": 706, "cumulative": 33326}, {"score": 593, "count": 725, "cumulative": 34051}, {"score": 592, "count": 716, "cumulative": 34767}, {"score": 591, "count": 742, "cumulative": 35509}, {"score": 590, "count": 770, "cumulative": 36279}, {"score": 589, "count": 751, "cumulative": 37030}, {"score": 588, "count": 761, "cumulative": 37791}, {"score": 587, "count": 739, "cumulative": 38530}, {"score": 586, "count": 769, "cumulative": 39299}, {"score": 585, "count": 822, "cumulative": 40121}, {"score": 584, "count": 713, "cumulative": 40834}, {"score": 583, "count": 812, "cumulative": 41646}, {"score": 582, "count": 777, "cumulative": 42423}, {"score": 581, "count": 766, "cumulative": 43189}, {"score": 580, "count": 836, "cumulative": 44025}, {"score": 579, "count": 817, "cumulative": 44842}, {"score": 578, "count": 817, "cumulative": 45659}, {"score": 577, "count": 830, "cumulative": 46489}, {"score": 576, "count": 840, "cumulative": 47329}, {"score": 575, "count": 852, "cumulative": 48181}, {"score": 574, "count": 867, "cumulative": 49048}, {"score": 573, "count": 895, "cumulative": 49943}, {"score": 572, "count": 924, "cumulative": 50867}, {"score": 571, "count": 959, "cumulative": 51826}, {"score": 570, "count": 871, "cumulative": 52697}, {"score": 569, "count": 905, "cumulative": 53602}, {"score": 568, "count": 955, "cumulative": 54557}, {"score": 567, "count": 960, "cumulative": 55517}, {"score": 566, "count": 972, "cumulative": 56489}, {"score": 565, "count": 926, "cumulative": 57415}, {"score": 564, "count": 990, "cumulative": 58405}, {"score": 563, "count": 950, "cumulative": 59355}, {"score": 562, "count": 965, "cumulative": 60320}, {"score": 561, "count": 1011, "cumulative": 61331}, {"score": 560, "count": 1015, "cumulative": 62346}, {"score": 559, "count": 1020, "cumulative": 63366}, {"score": 558, "count": 1052, "cumulative": 64418}, {"score": 557, "count": 1077, "cumulative": 65495}, {"score": 556, "count": 1112, "cumulative": 66607}, {"score": 555, "count": 1056, "cumulative": 67663}, {"score": 554, "count": 1093, "cumulative": 68756}, {"score": 553, "count": 1105, "cumulative": 69861}, {"score": 552, "count": 1112, "cumulative": 70973}, {"score": 551, "count": 1109, "cumulative": 72082}, {"score": 550, "count": 1064, "cumulative": 73146}, {"score": 549, "count": 1147, "cumulative": 74293}, {"score": 548, "count": 1078, "cumulative": 75371}, {"score": 547, "count": 1084, "cumulative": 76455}, {"score": 546, "count": 1136, "cumulative": 77591}, {"score": 545, "count": 1123, "cumulative": 78714}, {"score": 544, "count": 1171, "cumulative": 79885}, {"score": 543, "count": 1161, "cumulative": 81046}, {"score": 542, "count": 1178, "cumulative": 82224}, {"score": 541, "count": 1211, "cumulative": 83435}, {"score": 540, "count": 1197, "cumulative": 84632}, {"score": 539, "count": 1198, "cumulative": 85830}, {"score": 538, "count": 1204, "cumulative": 87034}, {"score": 537, "count": 1176, "cumulative": 88210}, {"score": 536, "count": 1177, "cumulative": 89387}, {"score": 535, "count": 1225, "cumulative": 90612}, {"score": 534, "count": 1205, "cumulative": 91817}, {"score": 533, "count": 1298, "cumulative": 93115}, {"score": 532, "count": 1243, "cumulative": 94358}, {"score": 531, "count": 1287, "cumulative": 95645}, {"score": 530, "count": 1264, "cumulative": 96909}, {"score": 529, "count": 1315, "cumulative": 98224}, {"score": 528, "count": 1248, "cumulative": 99472}, {"score": 527, "count": 1248, "cumulative": 100720}, {"score": 526, "count": 1250, "cumulative": 101970}, {"score": 525, "count": 1216, "cumulative": 103186}, {"score": 524, "count": 1356, "cumulative": 104542}, {"score": 523, "count": 1308, "cumulative": 105850}, {"score": 522, "count": 1365, "cumulative": 107215}, {"score": 521, "count": 1306, "cumulative": 108521}, {"score": 520, "count": 1332, "cumulative": 109853}, {"score": 519, "count": 1320, "cumulative": 111173}, {"score": 518, "count": 1377, "cumulative": 112550}, {"score": 517, "count": 1335, "cumulative": 113885}, {"score": 516, "count": 1299, "cumulative": 115184}, {"score": 515, "count": 1333, "cumulative": 116517}, {"score": 514, "count": 1335, "cumulative": 117852}, {"score": 513, "count": 1307, "cumulative": 119159}, {"score": 512, "count": 1357, "cumulative": 120516}, {"score": 511, "count": 1258, "cumulative": 121774}, {"score": 510, "count": 1351, "cumulative": 123125}, {"score": 509, "count": 1377, "cumulative": 124502}, {"score": 508, "count": 1428, "cumulative": 125930}, {"score": 507, "count": 1372, "cumulative": 127302}, {"score": 506, "count": 1302, "cumulative": 128604}, {"score": 505, "count": 1355, "cumulative": 129959}, {"score": 504, "count": 1341, "cumulative": 131300}, {"score": 503, "count": 1312, "cumulative": 132612}, {"score": 502, "count": 1386, "cumulative": 133998}, {"score": 501, "count": 1313, "cumulative": 135311}, {"score": 500, "count": 1386, "cumulative": 136697}, {"score": 499, "count": 1369, "cumulative": 138066}, {"score": 498, "count": 1361, "cumulative": 139427}, {"score": 497, "count": 1354, "cumulative": 140781}, {"score": 496, "count": 1339, "cumulative": 142120}, {"score": 495, "count": 1373, "cumulative": 143493}, {"score": 494, "count": 1359, "cumulative": 144852}, {"score": 493, "count": 1327, "cumulative": 146179}, {"score": 492, "count": 1327, "cumulative": 147506}, {"score": 491, "count": 1305, "cumulative": 148811}, {"score": 490, "count": 1320, "cumulative": 150131}, {"score": 489, "count": 1297, "cumulative": 151428}, {"score": 488, "count": 1333, "cumulative": 152761}, {"score": 487, "count": 1303, "cumulative": 154064}, {"score": 486, "count": 1330, "cumulative": 155394}, {"score": 485, "count": 1333, "cumulative": 156727}, {"score": 484, "count": 1252, "cumulative": 157979}, {"score": 483, "count": 1324, "cumulative": 159303}, {"score": 482, "count": 1350, "cumulative": 160653}, {"score": 481, "count": 1270, "cumulative": 161923}, {"score": 480, "count": 1285, "cumulative": 163208}, {"score": 479, "count": 1266, "cumulative": 164474}, {"score": 478, "count": 1233, "cumulative": 165707}, {"score": 477, "count": 1312, "cumulative": 167019}, {"score": 476, "count": 1262, "cumulative": 168281}, {"score": 475, "count": 1280, "cumulative": 169561}, {"score": 474, "count": 1223, "cumulative": 170784}, {"score": 473, "count": 1260, "cumulative": 172044}, {"score": 472, "count": 1216, "cumulative": 173260}, {"score": 471, "count": 1293, "cumulative": 174553}, {"score": 470, "count": 1203, "cumulative": 175756}, {"score": 469, "count": 1194, "cumulative": 176950}, {"score": 468, "count": 1222, "cumulative": 178172}, {"score": 467, "count": 1204, "cumulative": 179376}, {"score": 466, "count": 1222, "cumulative": 180598}, {"score": 465, "count": 1106, "cumulative": 181704}, {"score": 464, "count": 1163, "cumulative": 182867}, {"score": 463, "count": 1169, "cumulative": 184036}, {"score": 462, "count": 1127, "cumulative": 185163}, {"score": 461, "count": 1133, "cumulative": 186296}, {"score": 460, "count": 1148, "cumulative": 187444}, {"score": 459, "count": 1106, "cumulative": 188550}, {"score": 458, "count": 1165, "cumulative": 189715}, {"score": 457, "count": 1080, "cumulative": 190795}, {"score": 456, "count": 1023, "cumulative": 191818}, {"score": 455, "count": 1068, "cumulative": 192886}, {"score": 454, "count": 1053, "cumulative": 193939}, {"score": 453, "count": 1017, "cumulative": 194956}, {"score": 452, "count": 1040, "cumulative": 195996}, {"score": 451, "count": 1062, "cumulative": 197058}, {"score": 450, "count": 1049, "cumulative": 198107}, {"score": 449, "count": 999, "cumulative": 199106}, {"score": 448, "count": 1002, "cumulative": 200108}, {"score": 447, "count": 1030, "cumulative": 201138}, {"score": 446, "count": 1054, "cumulative": 202192}, {"score": 445, "count": 993, "cumulative": 203185}, {"score": 444, "count": 986, "cumulative": 204171}, {"score": 443, "count": 985, "cumulative": 205156}, {"score": 442, "count": 933, "cumulative": 206089}, {"score": 441, "count": 942, "cumulative": 207031}, {"score": 440, "count": 943, "cumulative": 207974}, {"score": 439, "count": 929, "cumulative": 208903}, {"score": 438, "count": 937, "cumulative": 209840}, {"score": 437, "count": 954, "cumulative": 210794}, {"score": 436, "count": 912, "cumulative": 211706}, {"score": 435, "count": 955, "cumulative": 212661}, {"score": 434, "count": 931, "cumulative": 213592}, {"score": 433, "count": 891, "cumulative": 214483}, {"score": 432, "count": 902, "cumulative": 215385}, {"score": 431, "count": 902, "cumulative": 216287}, {"score": 430, "count": 828, "cumulative": 217115}, {"score": 429, "count": 843, "cumulative": 217958}, {"score": 428, "count": 840, "cumulative": 218798}, {"score": 427, "count": 862, "cumulative": 219660}, {"score": 426, "count": 888, "cumulative": 220548}, {"score": 425, "count": 831, "cumulative": 221379}, {"score": 424, "count": 809, "cumulative": 222188}, {"score": 423, "count": 702, "cumulative": 222890}, {"score": 422, "count": 836, "cumulative": 223726}, {"score": 421, "count": 744, "cumulative": 224470}, {"score": 420, "count": 770, "cumulative": 225240}, {"score": 419, "count": 750, "cumulative": 225990}, {"score": 418, "count": 763, "cumulative": 226753}, {"score": 417, "count": 762, "cumulative": 227515}, {"score": 416, "count": 790, "cumulative": 228305}, {"score": 415, "count": 708, "cumulative": 229013}, {"score": 414, "count": 711, "cumulative": 229724}, {"score": 413, "count": 695, "cumulative": 230419}, {"score": 412, "count": 645, "cumulative": 231064}, {"score": 411, "count": 699, "cumulative": 231763}, {"score": 410, "count": 720, "cumulative": 232483}, {"score": 409, "count": 661, "cumulative": 233144}, {"score": 408, "count": 700, "cumulative": 233844}, {"score": 407, "count": 661, "cumulative": 234505}, {"score": 406, "count": 655, "cumulative": 235160}, {"score": 405, "count": 654, "cumulative": 235814}, {"score": 404, "count": 678, "cumulative": 236492}, {"score": 403, "count": 650, "cumulative": 237142}, {"score": 402, "count": 657, "cumulative": 237799}, {"score": 401, "count": 613, "cumulative": 238412}, {"score": 400, "count": 610, "cumulative": 239022}, {"score": 399, "count": 588, "cumulative": 239610}, {"score": 398, "count": 562, "cumulative": 240172}, {"score": 397, "count": 614, "cumulative": 240786}, {"score": 396, "count": 560, "cumulative": 241346}, {"score": 395, "count": 608, "cumulative": 241954}, {"score": 394, "count": 581, "cumulative": 242535}, {"score": 393, "count": 582, "cumulative": 243117}, {"score": 392, "count": 568, "cumulative": 243685}, {"score": 391, "count": 578, "cumulative": 244263}, {"score": 390, "count": 547, "cumulative": 244810}, {"score": 389, "count": 537, "cumulative": 245347}, {"score": 388, "count": 529, "cumulative": 245876}, {"score": 387, "count": 542, "cumulative": 246418}, {"score": 386, "count": 523, "cumulative": 246941}, {"score": 385, "count": 509, "cumulative": 247450}, {"score": 384, "count": 484, "cumulative": 247934}, {"score": 383, "count": 508, "cumulative": 248442}, {"score": 382, "count": 518, "cumulative": 248960}, {"score": 381, "count": 551, "cumulative": 249511}, {"score": 380, "count": 511, "cumulative": 250022}, {"score": 379, "count": 496, "cumulative": 250518}, {"score": 378, "count": 507, "cumulative": 251025}, {"score": 377, "count": 501, "cumulative": 251526}, {"score": 376, "count": 430, "cumulative": 251956}, {"score": 375, "count": 458, "cumulative": 252414}, {"score": 374, "count": 446, "cumulative": 252860}, {"score": 373, "count": 450, "cumulative": 253310}, {"score": 372, "count": 459, "cumulative": 253769}, {"score": 371, "count": 467, "cumulative": 254236}, {"score": 370, "count": 460, "cumulative": 254696}, {"score": 369, "count": 457, "cumulative": 255153}, {"score": 368, "count": 403, "cumulative": 255556}, {"score": 367, "count": 406, "cumulative": 255962}, {"score": 366, "count": 420, "cumulative": 256382}, {"score": 365, "count": 403, "cumulative": 256785}, {"score": 364, "count": 409, "cumulative": 257194}, {"score": 363, "count": 399, "cumulative": 257593}, {"score": 362, "count": 378, "cumulative": 257971}, {"score": 361, "count": 434, "cumulative": 258405}, {"score": 360, "count": 393, "cumulative": 258798}, {"score": 359, "count": 370, "cumulative": 259168}, {"score": 358, "count": 355, "cumulative": 259523}, {"score": 357, "count": 379, "cumulative": 259902}, {"score": 356, "count": 369, "cumulative": 260271}, {"score": 355, "count": 358, "cumulative": 260629}, {"score": 354, "count": 387, "cumulative": 261016}, {"score": 353, "count": 362, "cumulative": 261378}, {"score": 352, "count": 332, "cumulative": 261710}, {"score": 351, "count": 335, "cumulative": 262045}, {"score": 350, "count": 359, "cumulative": 262404}, {"score": 349, "count": 311, "cumulative": 262715}, {"score": 348, "count": 353, "cumulative": 263068}, {"score": 347, "count": 331, "cumulative": 263399}, {"score": 346, "count": 321, "cumulative": 263720}, {"score": 345, "count": 340, "cumulative": 264060}, {"score": 344, "count": 324, "cumulative": 264384}, {"score": 343, "count": 319, "cumulative": 264703}, {"score": 342, "count": 334, "cumulative": 265037}, {"score": 341, "count": 303, "cumulative": 265340}, {"score": 340, "count": 295, "cumulative": 265635}, {"score": 339, "count": 282, "cumulative": 265917}, {"score": 338, "count": 273, "cumulative": 266190}, {"score": 337, "count": 278, "cumulative": 266468}, {"score": 336, "count": 296, "cumulative": 266764}, {"score": 335, "count": 275, "cumulative": 267039}, {"score": 334, "count": 278, "cumulative": 267317}, {"score": 333, "count": 281, "cumulative": 267598}, {"score": 332, "count": 301, "cumulative": 267899}, {"score": 331, "count": 277, "cumulative": 268176}, {"score": 330, "count": 278, "cumulative": 268454}, {"score": 329, "count": 265, "cumulative": 268719}, {"score": 328, "count": 253, "cumulative": 268972}, {"score": 327, "count": 252, "cumulative": 269224}, {"score": 326, "count": 266, "cumulative": 269490}, {"score": 325, "count": 257, "cumulative": 269747}, {"score": 324, "count": 234, "cumulative": 269981}, {"score": 323, "count": 245, "cumulative": 270226}, {"score": 322, "count": 278, "cumulative": 270504}, {"score": 321, "count": 216, "cumulative": 270720}, {"score": 320, "count": 245, "cumulative": 270965}, {"score": 319, "count": 247, "cumulative": 271212}, {"score": 318, "count": 212, "cumulative": 271424}, {"score": 317, "count": 193, "cumulative": 271617}, {"score": 316, "count": 216, "cumulative": 271833}, {"score": 315, "count": 241, "cumulative": 272074}, {"score": 314, "count": 204, "cumulative": 272278}, {"score": 313, "count": 203, "cumulative": 272481}, {"score": 312, "count": 203, "cumulative": 272684}, {"score": 311, "count": 223, "cumulative": 272907}, {"score": 310, "count": 246, "cumulative": 273153}, {"score": 309, "count": 217, "cumulative": 273370}, {"score": 308, "count": 202, "cumulative": 273572}, {"score": 307, "count": 241, "cumulative": 273813}, {"score": 306, "count": 199, "cumulative": 274012}, {"score": 305, "count": 246, "cumulative": 274258}, {"score": 304, "count": 200, "cumulative": 274458}, {"score": 303, "count": 196, "cumulative": 274654}, {"score": 302, "count": 201, "cumulative": 274855}, {"score": 301, "count": 203, "cumulative": 275058}, {"score": 300, "count": 225, "cumulative": 275283}, {"score": 299, "count": 190, "cumulative": 275473}, {"score": 298, "count": 206, "cumulative": 275679}, {"score": 297, "count": 194, "cumulative": 275873}, {"score": 296, "count": 187, "cumulative": 276060}, {"score": 295, "count": 183, "cumulative": 276243}, {"score": 294, "count": 160, "cumulative": 276403}, {"score": 293, "count": 173, "cumulative": 276576}, {"score": 292, "count": 195, "cumulative": 276771}, {"score": 291, "count": 172, "cumulative": 276943}, {"score": 290, "count": 181, "cumulative": 277124}, {"score": 289, "count": 195, "cumulative": 277319}, {"score": 288, "count": 174, "cumulative": 277493}, {"score": 287, "count": 153, "cumulative": 277646}, {"score": 286, "count": 202, "cumulative": 277848}, {"score": 285, "count": 182, "cumulative": 278030}, {"score": 284, "count": 164, "cumulative": 278194}, {"score": 283, "count": 166, "cumulative": 278360}, {"score": 282, "count": 173, "cumulative": 278533}, {"score": 281, "count": 137, "cumulative": 278670}, {"score": 280, "count": 138, "cumulative": 278808}, {"score": 279, "count": 140, "cumulative": 278948}, {"score": 278, "count": 133, "cumulative": 279081}, {"score": 277, "count": 138, "cumulative": 279219}, {"score": 276, "count": 163, "cumulative": 279382}, {"score": 275, "count": 153, "cumulative": 279535}, {"score": 274, "count": 153, "cumulative": 279688}, {"score": 273, "count": 149, "cumulative": 279837}, {"score": 272, "count": 131, "cumulative": 279968}, {"score": 271, "count": 133, "cumulative": 280101}, {"score": 270, "count": 134, "cumulative": 280235}, {"score": 269, "count": 129, "cumulative": 280364}, {"score": 268, "count": 128, "cumulative": 280492}, {"score": 267, "count": 108, "cumulative": 280600}, {"score": 266, "count": 136, "cumulative": 280736}, {"score": 265, "count": 108, "cumulative": 280844}, {"score": 264, "count": 119, "cumulative": 280963}, {"score": 263, "count": 134, "cumulative": 281097}, {"score": 262, "count": 125, "cumulative": 281222}, {"score": 261, "count": 112, "cumulative": 281334}, {"score": 260, "count": 123, "cumulative": 281457}, {"score": 259, "count": 91, "cumulative": 281548}, {"score": 258, "count": 117, "cumulative": 281665}, {"score": 257, "count": 119, "cumulative": 281784}, {"score": 256, "count": 117, "cumulative": 281901}, {"score": 255, "count": 106, "cumulative": 282007}, {"score": 254, "count": 96, "cumulative": 282103}, {"score": 253, "count": 105, "cumulative": 282208}, {"score": 252, "count": 111, "cumulative": 282319}, {"score": 251, "count": 103, "cumulative": 282422}, {"score": 250, "count": 110, "cumulative": 282532}, {"score": 249, "count": 103, "cumulative": 282635}, {"score": 248, "count": 95, "cumulative": 282730}, {"score": 247, "count": 79, "cumulative": 282809}, {"score": 246, "count": 92, "cumulative": 282901}, {"score": 245, "count": 84, "cumulative": 282985}, {"score": 244, "count": 91, "cumulative": 283076}, {"score": 243, "count": 98, "cumulative": 283174}, {"score": 242, "count": 87, "cumulative": 283261}, {"score": 241, "count": 91, "cumulative": 283352}, {"score": 240, "count": 86, "cumulative": 283438}, {"score": 239, "count": 79, "cumulative": 283517}, {"score": 238, "count": 78, "cumulative": 283595}, {"score": 237, "count": 67, "cumulative": 283662}, {"score": 236, "count": 75, "cumulative": 283737}, {"score": 235, "count": 59, "cumulative": 283796}, {"score": 234, "count": 59, "cumulative": 283855}, {"score": 233, "count": 74, "cumulative": 283929}, {"score": 232, "count": 49, "cumulative": 283978}, {"score": 231, "count": 64, "cumulative": 284042}, {"score": 230, "count": 67, "cumulative": 284109}, {"score": 229, "count": 49, "cumulative": 284158}, {"score": 228, "count": 56, "cumulative": 284214}, {"score": 227, "count": 51, "cumulative": 284265}, {"score": 226, "count": 55, "cumulative": 284320}, {"score": 225, "count": 43, "cumulative": 284363}, {"score": 224, "count": 52, "cumulative": 284415}, {"score": 223, "count": 52, "cumulative": 284467}, {"score": 222, "count": 53, "cumulative": 284520}, {"score": 221, "count": 49, "cumulative": 284569}, {"score": 220, "count": 33, "cumulative": 284602}, {"score": 219, "count": 42, "cumulative": 284644}, {"score": 218, "count": 35, "cumulative": 284679}, {"score": 217, "count": 38, "cumulative": 284717}, {"score": 216, "count": 37, "cumulative": 284754}, {"score": 215, "count": 45, "cumulative": 284799}, {"score": 214, "count": 25, "cumulative": 284824}, {"score": 213, "count": 31, "cumulative": 284855}, {"score": 212, "count": 21, "cumulative": 284876}, {"score": 211, "count": 36, "cumulative": 284912}, {"score": 210, "count": 30, "cumulative": 284942}, {"score": 209, "count": 25, "cumulative": 284967}, {"score": 208, "count": 19, "cumulative": 284986}, {"score": 207, "count": 31, "cumulative": 285017}, {"score": 206, "count": 19, "cumulative": 285036}, {"score": 205, "count": 29, "cumulative": 285065}, {"score": 204, "count": 19, "cumulative": 285084}, {"score": 203, "count": 15, "cumulative": 285099}, {"score": 202, "count": 19, "cumulative": 285118}, {"score": 201, "count": 19, "cumulative": 285137}]}
@@ -0,0 +1 @@
1
+ {"province": "beijing", "province_name": "北京", "year": 2026, "track": "combined", "track_cn": "综合改革", "source": "北京教育考试院 官方PDF文本层(一分一段表全表)", "source_url": "https://www.bjeea.cn/html/gkgz/tzgg/2026/0624/88238.html", "note": "数据源:北京教育考试院官方PDF文本层(非OCR)《2026年北京市高考考生分数分布》;经 pdftotext -raw 提取后转 HTML 表,由 ingest-html.py running-sum 不变式逐行校验通过(313行全部通过,最终累计65892与逐行求和一致);PDF: https://www.bjeea.cn/uploads/soft/260625/2026年北京市高考考生分数分布.pdf", "count": 313, "rows": [{"score": 692, "count": 111, "cumulative": 111}, {"score": 691, "count": 21, "cumulative": 132}, {"score": 690, "count": 14, "cumulative": 146}, {"score": 689, "count": 17, "cumulative": 163}, {"score": 688, "count": 26, "cumulative": 189}, {"score": 687, "count": 32, "cumulative": 221}, {"score": 686, "count": 27, "cumulative": 248}, {"score": 685, "count": 30, "cumulative": 278}, {"score": 684, "count": 26, "cumulative": 304}, {"score": 683, "count": 22, "cumulative": 326}, {"score": 682, "count": 30, "cumulative": 356}, {"score": 681, "count": 42, "cumulative": 398}, {"score": 680, "count": 41, "cumulative": 439}, {"score": 679, "count": 36, "cumulative": 475}, {"score": 678, "count": 42, "cumulative": 517}, {"score": 677, "count": 60, "cumulative": 577}, {"score": 676, "count": 54, "cumulative": 631}, {"score": 675, "count": 49, "cumulative": 680}, {"score": 674, "count": 70, "cumulative": 750}, {"score": 673, "count": 56, "cumulative": 806}, {"score": 672, "count": 73, "cumulative": 879}, {"score": 671, "count": 64, "cumulative": 943}, {"score": 670, "count": 63, "cumulative": 1006}, {"score": 669, "count": 74, "cumulative": 1080}, {"score": 668, "count": 96, "cumulative": 1176}, {"score": 667, "count": 75, "cumulative": 1251}, {"score": 666, "count": 86, "cumulative": 1337}, {"score": 665, "count": 74, "cumulative": 1411}, {"score": 664, "count": 89, "cumulative": 1500}, {"score": 663, "count": 85, "cumulative": 1585}, {"score": 662, "count": 96, "cumulative": 1681}, {"score": 661, "count": 92, "cumulative": 1773}, {"score": 660, "count": 105, "cumulative": 1878}, {"score": 659, "count": 109, "cumulative": 1987}, {"score": 658, "count": 109, "cumulative": 2096}, {"score": 657, "count": 103, "cumulative": 2199}, {"score": 656, "count": 104, "cumulative": 2303}, {"score": 655, "count": 106, "cumulative": 2409}, {"score": 654, "count": 116, "cumulative": 2525}, {"score": 653, "count": 131, "cumulative": 2656}, {"score": 652, "count": 119, "cumulative": 2775}, {"score": 651, "count": 140, "cumulative": 2915}, {"score": 650, "count": 116, "cumulative": 3031}, {"score": 649, "count": 126, "cumulative": 3157}, {"score": 648, "count": 138, "cumulative": 3295}, {"score": 647, "count": 158, "cumulative": 3453}, {"score": 646, "count": 144, "cumulative": 3597}, {"score": 645, "count": 139, "cumulative": 3736}, {"score": 644, "count": 155, "cumulative": 3891}, {"score": 643, "count": 156, "cumulative": 4047}, {"score": 642, "count": 161, "cumulative": 4208}, {"score": 641, "count": 128, "cumulative": 4336}, {"score": 640, "count": 145, "cumulative": 4481}, {"score": 639, "count": 141, "cumulative": 4622}, {"score": 638, "count": 165, "cumulative": 4787}, {"score": 637, "count": 162, "cumulative": 4949}, {"score": 636, "count": 159, "cumulative": 5108}, {"score": 635, "count": 177, "cumulative": 5285}, {"score": 634, "count": 173, "cumulative": 5458}, {"score": 633, "count": 176, "cumulative": 5634}, {"score": 632, "count": 166, "cumulative": 5800}, {"score": 631, "count": 189, "cumulative": 5989}, {"score": 630, "count": 181, "cumulative": 6170}, {"score": 629, "count": 195, "cumulative": 6365}, {"score": 628, "count": 203, "cumulative": 6568}, {"score": 627, "count": 186, "cumulative": 6754}, {"score": 626, "count": 191, "cumulative": 6945}, {"score": 625, "count": 170, "cumulative": 7115}, {"score": 624, "count": 174, "cumulative": 7289}, {"score": 623, "count": 200, "cumulative": 7489}, {"score": 622, "count": 193, "cumulative": 7682}, {"score": 621, "count": 221, "cumulative": 7903}, {"score": 620, "count": 209, "cumulative": 8112}, {"score": 619, "count": 208, "cumulative": 8320}, {"score": 618, "count": 216, "cumulative": 8536}, {"score": 617, "count": 226, "cumulative": 8762}, {"score": 616, "count": 196, "cumulative": 8958}, {"score": 615, "count": 208, "cumulative": 9166}, {"score": 614, "count": 215, "cumulative": 9381}, {"score": 613, "count": 239, "cumulative": 9620}, {"score": 612, "count": 215, "cumulative": 9835}, {"score": 611, "count": 228, "cumulative": 10063}, {"score": 610, "count": 220, "cumulative": 10283}, {"score": 609, "count": 235, "cumulative": 10518}, {"score": 608, "count": 220, "cumulative": 10738}, {"score": 607, "count": 222, "cumulative": 10960}, {"score": 606, "count": 238, "cumulative": 11198}, {"score": 605, "count": 230, "cumulative": 11428}, {"score": 604, "count": 261, "cumulative": 11689}, {"score": 603, "count": 246, "cumulative": 11935}, {"score": 602, "count": 249, "cumulative": 12184}, {"score": 601, "count": 255, "cumulative": 12439}, {"score": 600, "count": 243, "cumulative": 12682}, {"score": 599, "count": 255, "cumulative": 12937}, {"score": 598, "count": 223, "cumulative": 13160}, {"score": 597, "count": 239, "cumulative": 13399}, {"score": 596, "count": 239, "cumulative": 13638}, {"score": 595, "count": 239, "cumulative": 13877}, {"score": 594, "count": 282, "cumulative": 14159}, {"score": 593, "count": 263, "cumulative": 14422}, {"score": 592, "count": 257, "cumulative": 14679}, {"score": 591, "count": 265, "cumulative": 14944}, {"score": 590, "count": 249, "cumulative": 15193}, {"score": 589, "count": 278, "cumulative": 15471}, {"score": 588, "count": 241, "cumulative": 15712}, {"score": 587, "count": 255, "cumulative": 15967}, {"score": 586, "count": 295, "cumulative": 16262}, {"score": 585, "count": 283, "cumulative": 16545}, {"score": 584, "count": 281, "cumulative": 16826}, {"score": 583, "count": 256, "cumulative": 17082}, {"score": 582, "count": 258, "cumulative": 17340}, {"score": 581, "count": 262, "cumulative": 17602}, {"score": 580, "count": 270, "cumulative": 17872}, {"score": 579, "count": 268, "cumulative": 18140}, {"score": 578, "count": 294, "cumulative": 18434}, {"score": 577, "count": 273, "cumulative": 18707}, {"score": 576, "count": 272, "cumulative": 18979}, {"score": 575, "count": 278, "cumulative": 19257}, {"score": 574, "count": 303, "cumulative": 19560}, {"score": 573, "count": 321, "cumulative": 19881}, {"score": 572, "count": 270, "cumulative": 20151}, {"score": 571, "count": 306, "cumulative": 20457}, {"score": 570, "count": 286, "cumulative": 20743}, {"score": 569, "count": 304, "cumulative": 21047}, {"score": 568, "count": 279, "cumulative": 21326}, {"score": 567, "count": 317, "cumulative": 21643}, {"score": 566, "count": 312, "cumulative": 21955}, {"score": 565, "count": 255, "cumulative": 22210}, {"score": 564, "count": 302, "cumulative": 22512}, {"score": 563, "count": 307, "cumulative": 22819}, {"score": 562, "count": 324, "cumulative": 23143}, {"score": 561, "count": 287, "cumulative": 23430}, {"score": 560, "count": 280, "cumulative": 23710}, {"score": 559, "count": 296, "cumulative": 24006}, {"score": 558, "count": 287, "cumulative": 24293}, {"score": 557, "count": 309, "cumulative": 24602}, {"score": 556, "count": 296, "cumulative": 24898}, {"score": 555, "count": 324, "cumulative": 25222}, {"score": 554, "count": 331, "cumulative": 25553}, {"score": 553, "count": 302, "cumulative": 25855}, {"score": 552, "count": 308, "cumulative": 26163}, {"score": 551, "count": 303, "cumulative": 26466}, {"score": 550, "count": 306, "cumulative": 26772}, {"score": 549, "count": 307, "cumulative": 27079}, {"score": 548, "count": 292, "cumulative": 27371}, {"score": 547, "count": 297, "cumulative": 27668}, {"score": 546, "count": 278, "cumulative": 27946}, {"score": 545, "count": 354, "cumulative": 28300}, {"score": 544, "count": 293, "cumulative": 28593}, {"score": 543, "count": 282, "cumulative": 28875}, {"score": 542, "count": 301, "cumulative": 29176}, {"score": 541, "count": 324, "cumulative": 29500}, {"score": 540, "count": 306, "cumulative": 29806}, {"score": 539, "count": 309, "cumulative": 30115}, {"score": 538, "count": 283, "cumulative": 30398}, {"score": 537, "count": 296, "cumulative": 30694}, {"score": 536, "count": 341, "cumulative": 31035}, {"score": 535, "count": 273, "cumulative": 31308}, {"score": 534, "count": 330, "cumulative": 31638}, {"score": 533, "count": 333, "cumulative": 31971}, {"score": 532, "count": 303, "cumulative": 32274}, {"score": 531, "count": 301, "cumulative": 32575}, {"score": 530, "count": 307, "cumulative": 32882}, {"score": 529, "count": 302, "cumulative": 33184}, {"score": 528, "count": 320, "cumulative": 33504}, {"score": 527, "count": 308, "cumulative": 33812}, {"score": 526, "count": 281, "cumulative": 34093}, {"score": 525, "count": 325, "cumulative": 34418}, {"score": 524, "count": 315, "cumulative": 34733}, {"score": 523, "count": 329, "cumulative": 35062}, {"score": 522, "count": 292, "cumulative": 35354}, {"score": 521, "count": 337, "cumulative": 35691}, {"score": 520, "count": 286, "cumulative": 35977}, {"score": 519, "count": 310, "cumulative": 36287}, {"score": 518, "count": 311, "cumulative": 36598}, {"score": 517, "count": 280, "cumulative": 36878}, {"score": 516, "count": 295, "cumulative": 37173}, {"score": 515, "count": 303, "cumulative": 37476}, {"score": 514, "count": 321, "cumulative": 37797}, {"score": 513, "count": 271, "cumulative": 38068}, {"score": 512, "count": 332, "cumulative": 38400}, {"score": 511, "count": 303, "cumulative": 38703}, {"score": 510, "count": 311, "cumulative": 39014}, {"score": 509, "count": 308, "cumulative": 39322}, {"score": 508, "count": 289, "cumulative": 39611}, {"score": 507, "count": 293, "cumulative": 39904}, {"score": 506, "count": 267, "cumulative": 40171}, {"score": 505, "count": 305, "cumulative": 40476}, {"score": 504, "count": 316, "cumulative": 40792}, {"score": 503, "count": 274, "cumulative": 41066}, {"score": 502, "count": 311, "cumulative": 41377}, {"score": 501, "count": 302, "cumulative": 41679}, {"score": 500, "count": 301, "cumulative": 41980}, {"score": 499, "count": 314, "cumulative": 42294}, {"score": 498, "count": 304, "cumulative": 42598}, {"score": 497, "count": 311, "cumulative": 42909}, {"score": 496, "count": 304, "cumulative": 43213}, {"score": 495, "count": 302, "cumulative": 43515}, {"score": 494, "count": 347, "cumulative": 43862}, {"score": 493, "count": 276, "cumulative": 44138}, {"score": 492, "count": 311, "cumulative": 44449}, {"score": 491, "count": 279, "cumulative": 44728}, {"score": 490, "count": 283, "cumulative": 45011}, {"score": 489, "count": 302, "cumulative": 45313}, {"score": 488, "count": 254, "cumulative": 45567}, {"score": 487, "count": 296, "cumulative": 45863}, {"score": 486, "count": 274, "cumulative": 46137}, {"score": 485, "count": 290, "cumulative": 46427}, {"score": 484, "count": 286, "cumulative": 46713}, {"score": 483, "count": 299, "cumulative": 47012}, {"score": 482, "count": 296, "cumulative": 47308}, {"score": 481, "count": 272, "cumulative": 47580}, {"score": 480, "count": 267, "cumulative": 47847}, {"score": 479, "count": 269, "cumulative": 48116}, {"score": 478, "count": 273, "cumulative": 48389}, {"score": 477, "count": 256, "cumulative": 48645}, {"score": 476, "count": 282, "cumulative": 48927}, {"score": 475, "count": 253, "cumulative": 49180}, {"score": 474, "count": 261, "cumulative": 49441}, {"score": 473, "count": 274, "cumulative": 49715}, {"score": 472, "count": 252, "cumulative": 49967}, {"score": 471, "count": 265, "cumulative": 50232}, {"score": 470, "count": 269, "cumulative": 50501}, {"score": 469, "count": 257, "cumulative": 50758}, {"score": 468, "count": 256, "cumulative": 51014}, {"score": 467, "count": 265, "cumulative": 51279}, {"score": 466, "count": 238, "cumulative": 51517}, {"score": 465, "count": 238, "cumulative": 51755}, {"score": 464, "count": 261, "cumulative": 52016}, {"score": 463, "count": 256, "cumulative": 52272}, {"score": 462, "count": 257, "cumulative": 52529}, {"score": 461, "count": 241, "cumulative": 52770}, {"score": 460, "count": 253, "cumulative": 53023}, {"score": 459, "count": 240, "cumulative": 53263}, {"score": 458, "count": 216, "cumulative": 53479}, {"score": 457, "count": 225, "cumulative": 53704}, {"score": 456, "count": 246, "cumulative": 53950}, {"score": 455, "count": 213, "cumulative": 54163}, {"score": 454, "count": 208, "cumulative": 54371}, {"score": 453, "count": 231, "cumulative": 54602}, {"score": 452, "count": 210, "cumulative": 54812}, {"score": 451, "count": 216, "cumulative": 55028}, {"score": 450, "count": 224, "cumulative": 55252}, {"score": 449, "count": 227, "cumulative": 55479}, {"score": 448, "count": 213, "cumulative": 55692}, {"score": 447, "count": 245, "cumulative": 55937}, {"score": 446, "count": 191, "cumulative": 56128}, {"score": 445, "count": 231, "cumulative": 56359}, {"score": 444, "count": 224, "cumulative": 56583}, {"score": 443, "count": 208, "cumulative": 56791}, {"score": 442, "count": 205, "cumulative": 56996}, {"score": 441, "count": 207, "cumulative": 57203}, {"score": 440, "count": 198, "cumulative": 57401}, {"score": 439, "count": 206, "cumulative": 57607}, {"score": 438, "count": 186, "cumulative": 57793}, {"score": 437, "count": 196, "cumulative": 57989}, {"score": 436, "count": 201, "cumulative": 58190}, {"score": 435, "count": 211, "cumulative": 58401}, {"score": 434, "count": 162, "cumulative": 58563}, {"score": 433, "count": 176, "cumulative": 58739}, {"score": 432, "count": 189, "cumulative": 58928}, {"score": 431, "count": 196, "cumulative": 59124}, {"score": 430, "count": 162, "cumulative": 59286}, {"score": 429, "count": 171, "cumulative": 59457}, {"score": 428, "count": 168, "cumulative": 59625}, {"score": 427, "count": 166, "cumulative": 59791}, {"score": 426, "count": 171, "cumulative": 59962}, {"score": 425, "count": 165, "cumulative": 60127}, {"score": 424, "count": 183, "cumulative": 60310}, {"score": 423, "count": 160, "cumulative": 60470}, {"score": 422, "count": 172, "cumulative": 60642}, {"score": 421, "count": 154, "cumulative": 60796}, {"score": 420, "count": 166, "cumulative": 60962}, {"score": 419, "count": 163, "cumulative": 61125}, {"score": 418, "count": 158, "cumulative": 61283}, {"score": 417, "count": 147, "cumulative": 61430}, {"score": 416, "count": 168, "cumulative": 61598}, {"score": 415, "count": 152, "cumulative": 61750}, {"score": 414, "count": 140, "cumulative": 61890}, {"score": 413, "count": 178, "cumulative": 62068}, {"score": 412, "count": 136, "cumulative": 62204}, {"score": 411, "count": 158, "cumulative": 62362}, {"score": 410, "count": 125, "cumulative": 62487}, {"score": 409, "count": 118, "cumulative": 62605}, {"score": 408, "count": 155, "cumulative": 62760}, {"score": 407, "count": 139, "cumulative": 62899}, {"score": 406, "count": 134, "cumulative": 63033}, {"score": 405, "count": 130, "cumulative": 63163}, {"score": 404, "count": 125, "cumulative": 63288}, {"score": 403, "count": 136, "cumulative": 63424}, {"score": 402, "count": 142, "cumulative": 63566}, {"score": 401, "count": 135, "cumulative": 63701}, {"score": 400, "count": 116, "cumulative": 63817}, {"score": 399, "count": 123, "cumulative": 63940}, {"score": 398, "count": 119, "cumulative": 64059}, {"score": 397, "count": 115, "cumulative": 64174}, {"score": 396, "count": 120, "cumulative": 64294}, {"score": 395, "count": 114, "cumulative": 64408}, {"score": 394, "count": 94, "cumulative": 64502}, {"score": 393, "count": 117, "cumulative": 64619}, {"score": 392, "count": 103, "cumulative": 64722}, {"score": 391, "count": 113, "cumulative": 64835}, {"score": 390, "count": 96, "cumulative": 64931}, {"score": 389, "count": 102, "cumulative": 65033}, {"score": 388, "count": 103, "cumulative": 65136}, {"score": 387, "count": 94, "cumulative": 65230}, {"score": 386, "count": 98, "cumulative": 65328}, {"score": 385, "count": 105, "cumulative": 65433}, {"score": 384, "count": 96, "cumulative": 65529}, {"score": 383, "count": 80, "cumulative": 65609}, {"score": 382, "count": 95, "cumulative": 65704}, {"score": 381, "count": 88, "cumulative": 65792}, {"score": 380, "count": 100, "cumulative": 65892}]}