diff --git a/prisma/tasks.ts b/prisma/tasks.ts index 657357df0..25279adb2 100755 --- a/prisma/tasks.ts +++ b/prisma/tasks.ts @@ -8256,6 +8256,132 @@ export const tasks = [ name: 'Reachable Towns', title: 'A. Reachable Towns', }, + { + id: 'ddcc2020_qual_f', + contest_id: 'ddcc2020-qual', + problem_index: 'F', + name: 'DISCOSMOS', + title: 'F. DISCOSMOS', + }, + { + id: 'ddcc2020_qual_e', + contest_id: 'ddcc2020-qual', + problem_index: 'E', + name: 'Majority of Balls', + title: 'E. Majority of Balls', + }, + { + id: 'ddcc2020_qual_d', + contest_id: 'ddcc2020-qual', + problem_index: 'D', + name: 'Digit Sum Replace', + title: 'D. Digit Sum Replace', + }, + { + id: 'ddcc2020_qual_c', + contest_id: 'ddcc2020-qual', + problem_index: 'C', + name: 'Strawberry Cakes', + title: 'C. Strawberry Cakes', + }, + { + id: 'ddcc2020_qual_b', + contest_id: 'ddcc2020-qual', + problem_index: 'B', + name: 'Iron Bar Cutting', + title: 'B. Iron Bar Cutting', + }, + { + id: 'ddcc2020_qual_a', + contest_id: 'ddcc2020-qual', + problem_index: 'A', + name: 'DDCC Finals', + title: 'A. DDCC Finals', + }, + { + id: 'nikkei2019_2_qual_f', + contest_id: 'nikkei2019-2-qual', + problem_index: 'F', + name: 'Mirror Frame', + title: 'F. Mirror Frame', + }, + { + id: 'nikkei2019_2_qual_e', + contest_id: 'nikkei2019-2-qual', + problem_index: 'E', + name: 'Non-triangular Triplets', + title: 'E. Non-triangular Triplets', + }, + { + id: 'nikkei2019_2_qual_d', + contest_id: 'nikkei2019-2-qual', + problem_index: 'D', + name: 'Shortest Path on a Line', + title: 'D. Shortest Path on a Line', + }, + { + id: 'nikkei2019_2_qual_c', + contest_id: 'nikkei2019-2-qual', + problem_index: 'C', + name: 'Swaps', + title: 'C. Swaps', + }, + { + id: 'nikkei2019_2_qual_b', + contest_id: 'nikkei2019-2-qual', + problem_index: 'B', + name: 'Counting of Trees', + title: 'B. Counting of Trees', + }, + { + id: 'nikkei2019_2_qual_a', + contest_id: 'nikkei2019-2-qual', + problem_index: 'A', + name: 'Sum of Two Integers', + title: 'A. Sum of Two Integers', + }, + { + id: 'diverta2019_2_f', + contest_id: 'diverta2019-2', + problem_index: 'F', + name: 'Diverta City', + title: 'F. Diverta City', + }, + { + id: 'diverta2019_2_e', + contest_id: 'diverta2019-2', + problem_index: 'E', + name: 'Balanced Piles', + title: 'E. Balanced Piles', + }, + { + id: 'diverta2019_2_d', + contest_id: 'diverta2019-2', + problem_index: 'D', + name: 'Squirrel Merchant', + title: 'D. Squirrel Merchant', + }, + { + id: 'diverta2019_2_c', + contest_id: 'diverta2019-2', + problem_index: 'C', + name: 'Successive Subtraction', + title: 'C. Successive Subtraction', + }, + { + id: 'diverta2019_2_b', + contest_id: 'diverta2019-2', + problem_index: 'B', + name: 'Picking Up', + title: 'B. Picking Up', + }, + { + id: 'diverta2019_2_a', + contest_id: 'diverta2019-2', + problem_index: 'A', + name: 'Ball Distribution', + title: 'A. Ball Distribution', + }, { id: 'tenka1_2019_f', contest_id: 'tenka1-2019', diff --git a/src/lib/contests/fixtures/contest_type.ts b/src/lib/contests/fixtures/contest_type.ts index 32663ea60..c8b3670a0 100644 --- a/src/lib/contests/fixtures/contest_type.ts +++ b/src/lib/contests/fixtures/contest_type.ts @@ -300,6 +300,10 @@ export const arcLike = [ contestId: 'diverta2019', expected: ContestType.ARC_LIKE, }), + createTestCaseForContestType('diverta 2019 Programming Contest 2')({ + contestId: 'diverta2019-2', + expected: ContestType.ARC_LIKE, + }), createTestCaseForContestType('KEYENCE2019')({ contestId: 'keyence2019', expected: ContestType.ARC_LIKE, @@ -320,6 +324,14 @@ export const arcLike = [ contestId: 'nikkei2019-qual', expected: ContestType.ARC_LIKE, }), + createTestCaseForContestType('NIKKEI2019-2 QUAL')({ + contestId: 'nikkei2019-2-qual', + expected: ContestType.ARC_LIKE, + }), + createTestCaseForContestType('DDCC2020 QUAL')({ + contestId: 'ddcc2020-qual', + expected: ContestType.ARC_LIKE, + }), createTestCaseForContestType('ACL1')({ contestId: 'acl1', expected: ContestType.ARC_LIKE, diff --git a/src/lib/contests/utils/prefixes.ts b/src/lib/contests/utils/prefixes.ts index 2956400e0..e3a94ce86 100644 --- a/src/lib/contests/utils/prefixes.ts +++ b/src/lib/contests/utils/prefixes.ts @@ -3,8 +3,9 @@ import type { ContestPrefix } from '$lib/contests/types/contest'; export const regexForJag = /^JAG(Prelim|Regional|Summer|Winter|Spring)\d{4}(-day\d+)?[A-Z]?$/; export const regexForAojUniversity = /^AOJ-[A-Z]+PC\d{4}/; -// HACK: As of December 2025, the following contests are applicable. +// HACK: As of October 2026, the following contests are applicable. // Note: The classification logic may need to be revised when new contests are added. +// ABC_LIKE / ARC_LIKE: exact match — add sequels (e.g. diverta2019-2) explicitly. Others: prefix match. export const ABC_LIKE: ContestPrefix = { 'tenka1-2017-beginner': 'Tenka1 Programmer Beginner Contest 2017', abl: 'ACL Beginner Contest', @@ -31,11 +32,14 @@ export const ARC_LIKE: ContestPrefix = { 'dwacon5th-prelims': '第5回 ドワンゴからの挑戦状 予選', 'dwacon6th-prelims': '第6回 ドワンゴからの挑戦状 予選', diverta2019: 'diverta 2019 Programming Contest', + 'diverta2019-2': 'diverta 2019 Programming Contest 2', keyence2019: 'キーエンス プログラミング コンテスト 2019', keyence2020: 'キーエンス プログラミング コンテスト 2020', keyence2021: 'キーエンス プログラミング コンテスト 2021', 'jsc2019-qual': '第一回日本最強プログラマー学生選手権-予選-', 'nikkei2019-qual': '全国統一プログラミング王決定戦予選', + 'nikkei2019-2-qual': '第二回全国統一プログラミング王決定戦予選', + 'ddcc2020-qual': 'DISCO presents ディスカバリーチャンネル コードコンテスト2020 予選', acl1: 'ACL Contest 1', } as const;