diff --git a/prisma/tasks.ts b/prisma/tasks.ts index a0809412a..b2f9534d2 100755 --- a/prisma/tasks.ts +++ b/prisma/tasks.ts @@ -8704,4 +8704,3273 @@ export const tasks = [ name: 'Driving on a Tree', title: 'D. Driving on a Tree', }, + { + id: '2389', + contest_id: 'JAGSpring2012', + problem_index: '2389', + name: 'Asynchronous Exceptions', + title: '2389. Asynchronous Exceptions', + }, + { + id: '2390', + contest_id: 'JAGSpring2012', + problem_index: '2390', + name: 'AYBABTU', + title: '2390. AYBABTU', + }, + { + id: '2391', + contest_id: 'JAGSpring2012', + problem_index: '2391', + name: 'Billiards Sorting', + title: '2391. Billiards Sorting', + }, + { + id: '2392', + contest_id: 'JAGSpring2012', + problem_index: '2392', + name: 'Digit', + title: '2392. Digit', + }, + { + id: '2393', + contest_id: 'JAGSpring2012', + problem_index: '2393', + name: 'Dungeon Creation', + title: '2393. Dungeon Creation', + }, + { + id: '2394', + contest_id: 'JAGSpring2012', + problem_index: '2394', + name: 'Longest Lane', + title: '2394. Longest Lane', + }, + { + id: '2395', + contest_id: 'JAGSpring2012', + problem_index: '2395', + name: 'Play in Basic', + title: '2395. Play in Basic', + }, + { + id: '2396', + contest_id: 'JAGSpring2012', + problem_index: '2396', + name: 'Skyland', + title: '2396. Skyland', + }, + { + id: '2397', + contest_id: 'JAGSpring2012', + problem_index: '2397', + name: 'Three-way Branch', + title: '2397. Three-way Branch', + }, + { + id: '2398', + contest_id: 'JAGSpring2012', + problem_index: '2398', + name: 'Tree Allocation', + title: '2398. Tree Allocation', + }, + { + id: '2555', + contest_id: 'JAGSpring2013', + problem_index: '2555', + name: 'Everlasting Zero', + title: '2555. Everlasting Zero', + }, + { + id: '2556', + contest_id: 'JAGSpring2013', + problem_index: '2556', + name: 'Integer in Integer', + title: '2556. Integer in Integer', + }, + { + id: '2557', + contest_id: 'JAGSpring2013', + problem_index: '2557', + name: 'Iyasugigappa', + title: '2557. Iyasugigappa', + }, + { + id: '2558', + contest_id: 'JAGSpring2013', + problem_index: '2558', + name: 'Medical Inspection', + title: '2558. Medical Inspection', + }, + { + id: '2559', + contest_id: 'JAGSpring2013', + problem_index: '2559', + name: 'Minimum Spanning Tree', + title: '2559. Minimum Spanning Tree', + }, + { + id: '2560', + contest_id: 'JAGSpring2013', + problem_index: '2560', + name: 'Point Distance', + title: '2560. Point Distance', + }, + { + id: '2561', + contest_id: 'JAGSpring2013', + problem_index: '2561', + name: 'Revenge of Minimum Cost Flow', + title: '2561. Revenge of Minimum Cost Flow', + }, + { + id: '2562', + contest_id: 'JAGSpring2013', + problem_index: '2562', + name: 'Rings', + title: '2562. Rings', + }, + { + id: '2563', + contest_id: 'JAGSpring2013', + problem_index: '2563', + name: 'The J-th Number', + title: '2563. The J-th Number', + }, + { + id: '2564', + contest_id: 'JAGSpring2013', + problem_index: '2564', + name: 'Tree Reconstruction', + title: '2564. Tree Reconstruction', + }, + { + id: '2677', + contest_id: 'JAGSpring2014', + problem_index: '2677', + name: 'Breadth-First Search by Foxpower', + title: '2677. Breadth-First Search by Foxpower', + }, + { + id: '2678', + contest_id: 'JAGSpring2014', + problem_index: '2678', + name: 'Cube Coloring', + title: '2678. Cube Coloring', + }, + { + id: '2679', + contest_id: 'JAGSpring2014', + problem_index: '2679', + name: 'Decoding Ancient Messages', + title: '2679. Decoding Ancient Messages', + }, + { + id: '2680', + contest_id: 'JAGSpring2014', + problem_index: '2680', + name: 'LR', + title: '2680. LR', + }, + { + id: '2681', + contest_id: 'JAGSpring2014', + problem_index: '2681', + name: 'Parentheses', + title: '2681. Parentheses', + }, + { + id: '2682', + contest_id: 'JAGSpring2014', + problem_index: '2682', + name: 'Polygon Guards', + title: '2682. Polygon Guards', + }, + { + id: '2683', + contest_id: 'JAGSpring2014', + problem_index: '2683', + name: 'Proportional Representation', + title: '2683. Proportional Representation', + }, + { + id: '2684', + contest_id: 'JAGSpring2014', + problem_index: '2684', + name: 'RLE Replacement', + title: '2684. RLE Replacement', + }, + { + id: '2685', + contest_id: 'JAGSpring2014', + problem_index: '2685', + name: 'Tokyo Olympics Center', + title: '2685. Tokyo Olympics Center', + }, + { + id: '2686', + contest_id: 'JAGSpring2014', + problem_index: '2686', + name: 'Unfair Game', + title: '2686. Unfair Game', + }, + { + id: '2687', + contest_id: 'JAGSpring2015', + problem_index: '2687', + name: 'Balanced Paths', + title: '2687. Balanced Paths', + }, + { + id: '2688', + contest_id: 'JAGSpring2015', + problem_index: '2688', + name: 'Card Game Strategy', + title: '2688. Card Game Strategy', + }, + { + id: '2689', + contest_id: 'JAGSpring2015', + problem_index: '2689', + name: 'Casino', + title: '2689. Casino', + }, + { + id: '2690', + contest_id: 'JAGSpring2015', + problem_index: '2690', + name: 'Content Delivery', + title: '2690. Content Delivery', + }, + { + id: '2691', + contest_id: 'JAGSpring2015', + problem_index: '2691', + name: 'Cost Performance Flow', + title: '2691. Cost Performance Flow', + }, + { + id: '2692', + contest_id: 'JAGSpring2015', + problem_index: '2692', + name: 'ICPC Teams', + title: '2692. ICPC Teams', + }, + { + id: '2693', + contest_id: 'JAGSpring2015', + problem_index: '2693', + name: 'JAG-channel II', + title: '2693. JAG-channel II', + }, + { + id: '2694', + contest_id: 'JAGSpring2015', + problem_index: '2694', + name: 'Kimagure Cleaner', + title: '2694. Kimagure Cleaner', + }, + { + id: '2695', + contest_id: 'JAGSpring2015', + problem_index: '2695', + name: 'Midpoint', + title: '2695. Midpoint', + }, + { + id: '2696', + contest_id: 'JAGSpring2015', + problem_index: '2696', + name: 'New Game AI', + title: '2696. New Game AI', + }, + { + id: '2697', + contest_id: 'JAGSpring2015', + problem_index: '2697', + name: 'Runner and Sniper', + title: '2697. Runner and Sniper', + }, + { + id: '2698', + contest_id: 'JAGSpring2015', + problem_index: '2698', + name: 'Wall Making Game', + title: '2698. Wall Making Game', + }, + { + id: '2057', + contest_id: 'JAGSummer2006-day1', + problem_index: '2057', + name: 'The Closest Circle', + title: '2057. The Closest Circle', + }, + { + id: '2058', + contest_id: 'JAGSummer2006-day2', + problem_index: '2058', + name: 'Moduic Squares', + title: '2058. Moduic Squares', + }, + { + id: '2059', + contest_id: 'JAGSummer2006-day2', + problem_index: '2059', + name: 'Restaurant', + title: '2059. Restaurant', + }, + { + id: '2060', + contest_id: 'JAGSummer2006-day2', + problem_index: '2060', + name: 'Tetrahedra', + title: '2060. Tetrahedra', + }, + { + id: '2061', + contest_id: 'JAGSummer2006-day2', + problem_index: '2061', + name: 'International Party', + title: '2061. International Party', + }, + { + id: '2062', + contest_id: 'JAGSummer2006-day2', + problem_index: '2062', + name: 'Hide-and-seek', + title: '2062. Hide-and-seek', + }, + { + id: '2063', + contest_id: 'JAGSummer2006-day2', + problem_index: '2063', + name: 'TV Watching', + title: '2063. TV Watching', + }, + { + id: '2064', + contest_id: 'JAGSummer2006-day2', + problem_index: '2064', + name: 'Make Friendships', + title: '2064. Make Friendships', + }, + { + id: '2065', + contest_id: 'JAGSummer2006-day2', + problem_index: '2065', + name: 'Slippy Floors', + title: '2065. Slippy Floors', + }, + { + id: '2066', + contest_id: 'JAGSummer2006-day2', + problem_index: '2066', + name: 'Roads in a City', + title: '2066. Roads in a City', + }, + { + id: '2067', + contest_id: 'JAGSummer2006-day3', + problem_index: '2067', + name: 'Reading Brackets in English', + title: '2067. Reading Brackets in English', + }, + { + id: '2068', + contest_id: 'JAGSummer2006-day3', + problem_index: '2068', + name: 'Grated Radish', + title: '2068. Grated Radish', + }, + { + id: '2069', + contest_id: 'JAGSummer2006-day3', + problem_index: '2069', + name: 'Greedy, Greedy.', + title: '2069. Greedy, Greedy.', + }, + { + id: '2070', + contest_id: 'JAGSummer2006-day3', + problem_index: '2070', + name: 'First Experience', + title: '2070. First Experience', + }, + { + id: '2071', + contest_id: 'JAGSummer2006-day3', + problem_index: '2071', + name: 'Web 0.5', + title: '2071. Web 0.5', + }, + { + id: '2072', + contest_id: 'JAGSummer2006-day3', + problem_index: '2072', + name: "Philosopher's Stone", + title: "2072. Philosopher's Stone", + }, + { + id: '2079', + contest_id: 'JAGSummer2007-day1', + problem_index: '2079', + name: 'Dance Dance Revolution', + title: '2079. Dance Dance Revolution', + }, + { + id: '2080', + contest_id: 'JAGSummer2007-day1', + problem_index: '2080', + name: 'Compress Files', + title: '2080. Compress Files', + }, + { + id: '2081', + contest_id: 'JAGSummer2007-day1', + problem_index: '2081', + name: 'Save the Energy', + title: '2081. Save the Energy', + }, + { + id: '2082', + contest_id: 'JAGSummer2007-day1', + problem_index: '2082', + name: 'Goofy Converter', + title: '2082. Goofy Converter', + }, + { + id: '2083', + contest_id: 'JAGSummer2007-day1', + problem_index: '2083', + name: 'Black Force', + title: '2083. Black Force', + }, + { + id: '2084', + contest_id: 'JAGSummer2007-day2', + problem_index: '2084', + name: 'Hit and Blow', + title: '2084. Hit and Blow', + }, + { + id: '2085', + contest_id: 'JAGSummer2007-day2', + problem_index: '2085', + name: 'Turn Left', + title: '2085. Turn Left', + }, + { + id: '2086', + contest_id: 'JAGSummer2007-day2', + problem_index: '2086', + name: '!', + title: '2086. !', + }, + { + id: '2087', + contest_id: 'JAGSummer2007-day2', + problem_index: '2087', + name: 'Speed', + title: '2087. Speed', + }, + { + id: '2088', + contest_id: 'JAGSummer2007-day2', + problem_index: '2088', + name: 'Spirograph', + title: '2088. Spirograph', + }, + { + id: '2089', + contest_id: 'JAGSummer2007-day2', + problem_index: '2089', + name: 'Mysterious Dungeons', + title: '2089. Mysterious Dungeons', + }, + { + id: '2090', + contest_id: 'JAGSummer2007-day2', + problem_index: '2090', + name: 'Repeated Subsequences', + title: '2090. Repeated Subsequences', + }, + { + id: '2091', + contest_id: 'JAGSummer2007-day2', + problem_index: '2091', + name: 'Petoris', + title: '2091. Petoris', + }, + { + id: '2092', + contest_id: 'JAGSummer2007-day2', + problem_index: '2092', + name: 'Pythagoraslope', + title: '2092. Pythagoraslope', + }, + { + id: '2093', + contest_id: 'JAGSummer2007-day3', + problem_index: '2093', + name: 'Election', + title: '2093. Election', + }, + { + id: '2094', + contest_id: 'JAGSummer2007-day3', + problem_index: '2094', + name: 'Jaggie Spheres', + title: '2094. Jaggie Spheres', + }, + { + id: '2095', + contest_id: 'JAGSummer2007-day3', + problem_index: '2095', + name: 'Nagashi Soumen', + title: '2095. Nagashi Soumen', + }, + { + id: '2096', + contest_id: 'JAGSummer2007-day3', + problem_index: '2096', + name: 'Private Teacher', + title: '2096. Private Teacher', + }, + { + id: '2097', + contest_id: 'JAGSummer2007-day3', + problem_index: '2097', + name: 'Triangles', + title: '2097. Triangles', + }, + { + id: '2098', + contest_id: 'JAGSummer2007-day3', + problem_index: '2098', + name: 'Two-finger Programming', + title: '2098. Two-finger Programming', + }, + { + id: '2099', + contest_id: 'JAGSummer2007-day3', + problem_index: '2099', + name: 'Walk under a Scorching Sun', + title: '2099. Walk under a Scorching Sun', + }, + { + id: '2131', + contest_id: 'JAGSummer2008-day2', + problem_index: '2131', + name: 'Pi is Three', + title: '2131. Pi is Three', + }, + { + id: '2132', + contest_id: 'JAGSummer2008-day2', + problem_index: '2132', + name: 'Left Hand Rule', + title: '2132. Left Hand Rule', + }, + { + id: '2133', + contest_id: 'JAGSummer2008-day2', + problem_index: '2133', + name: 'Alice and Bob', + title: '2133. Alice and Bob', + }, + { + id: '2134', + contest_id: 'JAGSummer2008-day2', + problem_index: '2134', + name: 'Deadly Dice Game', + title: '2134. Deadly Dice Game', + }, + { + id: '2135', + contest_id: 'JAGSummer2008-day2', + problem_index: '2135', + name: 'Reverse a Road', + title: '2135. Reverse a Road', + }, + { + id: '2136', + contest_id: 'JAGSummer2008-day2', + problem_index: '2136', + name: 'Webby Subway', + title: '2136. Webby Subway', + }, + { + id: '2137', + contest_id: 'JAGSummer2008-day2', + problem_index: '2137', + name: 'Time Trial', + title: '2137. Time Trial', + }, + { + id: '2138', + contest_id: 'JAGSummer2008-day2', + problem_index: '2138', + name: 'Vending Machine', + title: '2138. Vending Machine', + }, + { + id: '2139', + contest_id: 'JAGSummer2008-day2', + problem_index: '2139', + name: 'Memory Match', + title: '2139. Memory Match', + }, + { + id: '2140', + contest_id: 'JAGSummer2008-day2', + problem_index: '2140', + name: 'Tile Puzzle', + title: '2140. Tile Puzzle', + }, + { + id: '2141', + contest_id: 'JAGSummer2008-day4', + problem_index: '2141', + name: "Girls' Party", + title: "2141. Girls' Party", + }, + { + id: '2142', + contest_id: 'JAGSummer2008-day4', + problem_index: '2142', + name: 'Bitwise Kingdom', + title: '2142. Bitwise Kingdom', + }, + { + id: '2143', + contest_id: 'JAGSummer2008-day4', + problem_index: '2143', + name: 'Adaptive Time Slicing Quantization', + title: '2143. Adaptive Time Slicing Quantization', + }, + { + id: '2144', + contest_id: 'JAGSummer2008-day4', + problem_index: '2144', + name: 'Reaction', + title: '2144. Reaction', + }, + { + id: '2145', + contest_id: 'JAGSummer2008-day4', + problem_index: '2145', + name: 'Magical Island', + title: '2145. Magical Island', + }, + { + id: '2146', + contest_id: 'JAGSummer2008-day4', + problem_index: '2146', + name: 'Ninja Legend', + title: '2146. Ninja Legend', + }, + { + id: '2147', + contest_id: 'JAGSummer2008-day4', + problem_index: '2147', + name: 'Do It', + title: '2147. Do It', + }, + { + id: '2148', + contest_id: 'JAGSummer2008-day4', + problem_index: '2148', + name: 'Robot Communication', + title: '2148. Robot Communication', + }, + { + id: '2155', + contest_id: 'JAGSummer2009-day2', + problem_index: '2155', + name: 'Infected Computer', + title: '2155. Infected Computer', + }, + { + id: '2156', + contest_id: 'JAGSummer2009-day2', + problem_index: '2156', + name: 'Magic Slayer', + title: '2156. Magic Slayer', + }, + { + id: '2157', + contest_id: 'JAGSummer2009-day2', + problem_index: '2157', + name: 'Dial Lock', + title: '2157. Dial Lock', + }, + { + id: '2158', + contest_id: 'JAGSummer2009-day2', + problem_index: '2158', + name: 'Double Sorting', + title: '2158. Double Sorting', + }, + { + id: '2159', + contest_id: 'JAGSummer2009-day2', + problem_index: '2159', + name: 'Symmetry', + title: '2159. Symmetry', + }, + { + id: '2160', + contest_id: 'JAGSummer2009-day2', + problem_index: '2160', + name: 'Voronoi Island', + title: '2160. Voronoi Island', + }, + { + id: '2161', + contest_id: 'JAGSummer2009-day2', + problem_index: '2161', + name: 'Defend the Bases', + title: '2161. Defend the Bases', + }, + { + id: '2162', + contest_id: 'JAGSummer2009-day2', + problem_index: '2162', + name: 'Galaxy Wide Web Service', + title: '2162. Galaxy Wide Web Service', + }, + { + id: '2163', + contest_id: 'JAGSummer2009-day2', + problem_index: '2163', + name: 'Tatami', + title: '2163. Tatami', + }, + { + id: '2164', + contest_id: 'JAGSummer2009-day2', + problem_index: '2164', + name: 'Revenge of the Round Table', + title: '2164. Revenge of the Round Table', + }, + { + id: '2165', + contest_id: 'JAGSummer2009-day3', + problem_index: '2165', + name: 'Strange String Manipulation', + title: '2165. Strange String Manipulation', + }, + { + id: '2166', + contest_id: 'JAGSummer2009-day3', + problem_index: '2166', + name: 'Erratic Sleep Habits', + title: '2166. Erratic Sleep Habits', + }, + { + id: '2167', + contest_id: 'JAGSummer2009-day3', + problem_index: '2167', + name: 'Find the Point', + title: '2167. Find the Point', + }, + { + id: '2168', + contest_id: 'JAGSummer2009-day3', + problem_index: '2168', + name: "Luigi's Tavern", + title: "2168. Luigi's Tavern", + }, + { + id: '2169', + contest_id: 'JAGSummer2009-day3', + problem_index: '2169', + name: 'Colored Octahedra', + title: '2169. Colored Octahedra', + }, + { + id: '2170', + contest_id: 'JAGSummer2009-day3', + problem_index: '2170', + name: 'Marked Ancestor', + title: '2170. Marked Ancestor', + }, + { + id: '2171', + contest_id: 'JAGSummer2009-day3', + problem_index: '2171', + name: 'Strange Couple', + title: '2171. Strange Couple', + }, + { + id: '2172', + contest_id: 'JAGSummer2009-day3', + problem_index: '2172', + name: "Queen's Case", + title: "2172. Queen's Case", + }, + { + id: '2173', + contest_id: 'JAGSummer2009-day3', + problem_index: '2173', + name: 'Wind Passages', + title: '2173. Wind Passages', + }, + { + id: '2174', + contest_id: 'JAGSummer2009-day3', + problem_index: '2174', + name: 'Secret Operation', + title: '2174. Secret Operation', + }, + { + id: '2330', + contest_id: 'JAGSummer2010-day2', + problem_index: '2330', + name: 'Earth Invasion Diary of Miyabi-sensei', + title: '2330. Earth Invasion Diary of Miyabi-sensei', + }, + { + id: '2331', + contest_id: 'JAGSummer2010-day2', + problem_index: '2331', + name: 'A Way to Invite Friends', + title: '2331. A Way to Invite Friends', + }, + { + id: '2332', + contest_id: 'JAGSummer2010-day2', + problem_index: '2332', + name: 'Space-Time Sugoroku Road', + title: '2332. Space-Time Sugoroku Road', + }, + { + id: '2333', + contest_id: 'JAGSummer2010-day2', + problem_index: '2333', + name: 'My friends are small', + title: '2333. My friends are small', + }, + { + id: '2334', + contest_id: 'JAGSummer2010-day2', + problem_index: '2334', + name: 'Roads on Towns', + title: '2334. Roads on Towns', + }, + { + id: '2335', + contest_id: 'JAGSummer2010-day2', + problem_index: '2335', + name: '10-Year-Old Dynamic Programming', + title: '2335. 10-Year-Old Dynamic Programming', + }, + { + id: '2336', + contest_id: 'JAGSummer2010-day2', + problem_index: '2336', + name: 'Spring Tiles', + title: '2336. Spring Tiles', + }, + { + id: '2337', + contest_id: 'JAGSummer2010-day2', + problem_index: '2337', + name: 'Remodeling Plan for Neko-Nabe (tentative)', + title: '2337. Remodeling Plan for Neko-Nabe (tentative)', + }, + { + id: '2338', + contest_id: 'JAGSummer2010-day2', + problem_index: '2338', + name: 'Intelligible Double Magic', + title: '2338. Intelligible Double Magic', + }, + { + id: '2339', + contest_id: 'JAGSummer2010-day2', + problem_index: '2339', + name: "Person responsible for problem description don't w", + title: "2339. Person responsible for problem description don't w", + }, + { + id: '2232', + contest_id: 'JAGSummer2010-day3', + problem_index: '2232', + name: 'Ennichi', + title: '2232. Ennichi', + }, + { + id: '2233', + contest_id: 'JAGSummer2010-day3', + problem_index: '2233', + name: 'Carrot Tour', + title: '2233. Carrot Tour', + }, + { + id: '2234', + contest_id: 'JAGSummer2010-day3', + problem_index: '2234', + name: 'Usagitobi', + title: '2234. Usagitobi', + }, + { + id: '2235', + contest_id: 'JAGSummer2010-day3', + problem_index: '2235', + name: 'Graph Construction', + title: '2235. Graph Construction', + }, + { + id: '2236', + contest_id: 'JAGSummer2010-day3', + problem_index: '2236', + name: 'Rabbit Plays Games!', + title: '2236. Rabbit Plays Games!', + }, + { + id: '2237', + contest_id: 'JAGSummer2010-day3', + problem_index: '2237', + name: 'The Castle', + title: '2237. The Castle', + }, + { + id: '2238', + contest_id: 'JAGSummer2010-day3', + problem_index: '2238', + name: 'Nurie', + title: '2238. Nurie', + }, + { + id: '2239', + contest_id: 'JAGSummer2010-day3', + problem_index: '2239', + name: 'Nearest Station', + title: '2239. Nearest Station', + }, + { + id: '2240', + contest_id: 'JAGSummer2010-day3', + problem_index: '2240', + name: 'Lapin Noir', + title: '2240. Lapin Noir', + }, + { + id: '2241', + contest_id: 'JAGSummer2010-day3', + problem_index: '2241', + name: 'Usaneko Matrix', + title: '2241. Usaneko Matrix', + }, + { + id: '2222', + contest_id: 'JAGSummer2010-day4', + problem_index: '2222', + name: "Alien's Counting", + title: "2222. Alien's Counting", + }, + { + id: '2223', + contest_id: 'JAGSummer2010-day4', + problem_index: '2223', + name: 'Kaeru Jump', + title: '2223. Kaeru Jump', + }, + { + id: '2224', + contest_id: 'JAGSummer2010-day4', + problem_index: '2224', + name: 'Save your cats', + title: '2224. Save your cats', + }, + { + id: '2225', + contest_id: 'JAGSummer2010-day4', + problem_index: '2225', + name: 'Dungeon Wall', + title: '2225. Dungeon Wall', + }, + { + id: '2226', + contest_id: 'JAGSummer2010-day4', + problem_index: '2226', + name: 'Psychic Accelerator', + title: '2226. Psychic Accelerator', + }, + { + id: '2227', + contest_id: 'JAGSummer2010-day4', + problem_index: '2227', + name: 'Bouldering', + title: '2227. Bouldering', + }, + { + id: '2228', + contest_id: 'JAGSummer2010-day4', + problem_index: '2228', + name: "DON'T PANIC!", + title: "2228. DON'T PANIC!", + }, + { + id: '2229', + contest_id: 'JAGSummer2010-day4', + problem_index: '2229', + name: 'Ropeway', + title: '2229. Ropeway', + }, + { + id: '2230', + contest_id: 'JAGSummer2010-day4', + problem_index: '2230', + name: 'How to Create a Good Game', + title: '2230. How to Create a Good Game', + }, + { + id: '2231', + contest_id: 'JAGSummer2010-day4', + problem_index: '2231', + name: 'Cruel Bingo', + title: '2231. Cruel Bingo', + }, + { + id: '2290', + contest_id: 'JAGSummer2011-day2', + problem_index: '2290', + name: 'Attack the Moles', + title: '2290. Attack the Moles', + }, + { + id: '2291', + contest_id: 'JAGSummer2011-day2', + problem_index: '2291', + name: 'Brilliant Stars', + title: '2291. Brilliant Stars', + }, + { + id: '2292', + contest_id: 'JAGSummer2011-day2', + problem_index: '2292', + name: 'Common Palindromes', + title: '2292. Common Palindromes', + }, + { + id: '2293', + contest_id: 'JAGSummer2011-day2', + problem_index: '2293', + name: 'Dangerous Tower', + title: '2293. Dangerous Tower', + }, + { + id: '2294', + contest_id: 'JAGSummer2011-day2', + problem_index: '2294', + name: 'Entangled with Lottery', + title: '2294. Entangled with Lottery', + }, + { + id: '2295', + contest_id: 'JAGSummer2011-day2', + problem_index: '2295', + name: 'Power of Power', + title: '2295. Power of Power', + }, + { + id: '2296', + contest_id: 'JAGSummer2011-day2', + problem_index: '2296', + name: 'Quest of Merchant', + title: '2296. Quest of Merchant', + }, + { + id: '2297', + contest_id: 'JAGSummer2011-day2', + problem_index: '2297', + name: 'Rectangular Stamps', + title: '2297. Rectangular Stamps', + }, + { + id: '2298', + contest_id: 'JAGSummer2011-day2', + problem_index: '2298', + name: 'Starting Line', + title: '2298. Starting Line', + }, + { + id: '2299', + contest_id: 'JAGSummer2011-day2', + problem_index: '2299', + name: 'Tiles are Colorful', + title: '2299. Tiles are Colorful', + }, + { + id: '2300', + contest_id: 'JAGSummer2011-day3', + problem_index: '2300', + name: 'Calender Colors', + title: '2300. Calender Colors', + }, + { + id: '2301', + contest_id: 'JAGSummer2011-day3', + problem_index: '2301', + name: 'Sleeping Time', + title: '2301. Sleeping Time', + }, + { + id: '2302', + contest_id: 'JAGSummer2011-day3', + problem_index: '2302', + name: 'On or Off', + title: '2302. On or Off', + }, + { + id: '2303', + contest_id: 'JAGSummer2011-day3', + problem_index: '2303', + name: 'Marathon Match', + title: '2303. Marathon Match', + }, + { + id: '2304', + contest_id: 'JAGSummer2011-day3', + problem_index: '2304', + name: 'Reverse Roads', + title: '2304. Reverse Roads', + }, + { + id: '2305', + contest_id: 'JAGSummer2011-day3', + problem_index: '2305', + name: 'Beautiful Currency', + title: '2305. Beautiful Currency', + }, + { + id: '2306', + contest_id: 'JAGSummer2011-day3', + problem_index: '2306', + name: 'Rabbit Party', + title: '2306. Rabbit Party', + }, + { + id: '2307', + contest_id: 'JAGSummer2011-day3', + problem_index: '2307', + name: 'Palindrome Generator', + title: '2307. Palindrome Generator', + }, + { + id: '2308', + contest_id: 'JAGSummer2011-day3', + problem_index: '2308', + name: 'White Bird', + title: '2308. White Bird', + }, + { + id: '2309', + contest_id: 'JAGSummer2011-day3', + problem_index: '2309', + name: 'Vector Compression', + title: '2309. Vector Compression', + }, + { + id: '2310', + contest_id: 'JAGSummer2011-day4', + problem_index: '2310', + name: 'Rose Garden Witch', + title: '2310. Rose Garden Witch', + }, + { + id: '2311', + contest_id: 'JAGSummer2011-day4', + problem_index: '2311', + name: 'Dessert Witch', + title: '2311. Dessert Witch', + }, + { + id: '2312', + contest_id: 'JAGSummer2011-day4', + problem_index: '2312', + name: 'Magical Girl Sayaka-chan', + title: '2312. Magical Girl Sayaka-chan', + }, + { + id: '2313', + contest_id: 'JAGSummer2011-day4', + problem_index: '2313', + name: 'Box Witch', + title: '2313. Box Witch', + }, + { + id: '2314', + contest_id: 'JAGSummer2011-day4', + problem_index: '2314', + name: 'Scribbling witch', + title: '2314. Scribbling witch', + }, + { + id: '2315', + contest_id: 'JAGSummer2011-day4', + problem_index: '2315', + name: 'Shadow Witch', + title: '2315. Shadow Witch', + }, + { + id: '2316', + contest_id: 'JAGSummer2011-day4', + problem_index: '2316', + name: 'Mermaid Witch', + title: '2316. Mermaid Witch', + }, + { + id: '2317', + contest_id: 'JAGSummer2011-day4', + problem_index: '2317', + name: 'Class Representative Witch', + title: '2317. Class Representative Witch', + }, + { + id: '2318', + contest_id: 'JAGSummer2011-day4', + problem_index: '2318', + name: 'Set-constructing Witch', + title: '2318. Set-constructing Witch', + }, + { + id: '2319', + contest_id: 'JAGSummer2011-day4', + problem_index: '2319', + name: 'Soul Gem Game', + title: '2319. Soul Gem Game', + }, + { + id: '2424', + contest_id: 'JAGSummer2012-day2', + problem_index: '2424', + name: 'Kakezan', + title: '2424. Kakezan', + }, + { + id: '2425', + contest_id: 'JAGSummer2012-day2', + problem_index: '2425', + name: 'A Holiday of Miss Brute Force', + title: '2425. A Holiday of Miss Brute Force', + }, + { + id: '2426', + contest_id: 'JAGSummer2012-day2', + problem_index: '2426', + name: 'Treasure Hunt', + title: '2426. Treasure Hunt', + }, + { + id: '2427', + contest_id: 'JAGSummer2012-day2', + problem_index: '2427', + name: 'hosonagaitokoro', + title: '2427. hosonagaitokoro', + }, + { + id: '2428', + contest_id: 'JAGSummer2012-day2', + problem_index: '2428', + name: 'Lost Number', + title: '2428. Lost Number', + }, + { + id: '2429', + contest_id: 'JAGSummer2012-day2', + problem_index: '2429', + name: 'marukaite', + title: '2429. marukaite', + }, + { + id: '2430', + contest_id: 'JAGSummer2012-day2', + problem_index: '2430', + name: 'Longest Increasing Sequence', + title: '2430. Longest Increasing Sequence', + }, + { + id: '2431', + contest_id: 'JAGSummer2012-day2', + problem_index: '2431', + name: 'House Moving', + title: '2431. House Moving', + }, + { + id: '2432', + contest_id: 'JAGSummer2012-day2', + problem_index: '2432', + name: 'Sports Days 2.0', + title: '2432. Sports Days 2.0', + }, + { + id: '2433', + contest_id: 'JAGSummer2012-day2', + problem_index: '2433', + name: 'Final Defense Line', + title: '2433. Final Defense Line', + }, + { + id: '2434', + contest_id: 'JAGSummer2012-day3A', + problem_index: '2434', + name: 'Audition', + title: '2434. Audition', + }, + { + id: '2435', + contest_id: 'JAGSummer2012-day3A', + problem_index: '2435', + name: 'Zero Division Checker', + title: '2435. Zero Division Checker', + }, + { + id: '2436', + contest_id: 'JAGSummer2012-day3A', + problem_index: '2436', + name: 'Card', + title: '2436. Card', + }, + { + id: '2437', + contest_id: 'JAGSummer2012-day3A', + problem_index: '2437', + name: 'DNA', + title: '2437. DNA', + }, + { + id: '2438', + contest_id: 'JAGSummer2012-day3A', + problem_index: '2438', + name: 'YAML', + title: '2438. YAML', + }, + { + id: '2439', + contest_id: 'JAGSummer2012-day3A', + problem_index: '2439', + name: 'Hakone', + title: '2439. Hakone', + }, + { + id: '2440', + contest_id: 'JAGSummer2012-day3B', + problem_index: '2440', + name: 'Kagisys', + title: '2440. Kagisys', + }, + { + id: '2441', + contest_id: 'JAGSummer2012-day3B', + problem_index: '2441', + name: 'FizzBuzz', + title: '2441. FizzBuzz', + }, + { + id: '2442', + contest_id: 'JAGSummer2012-day3B', + problem_index: '2442', + name: 'ConvexCut', + title: '2442. ConvexCut', + }, + { + id: '2443', + contest_id: 'JAGSummer2012-day3B', + problem_index: '2443', + name: 'ReverseSort', + title: '2443. ReverseSort', + }, + { + id: '2444', + contest_id: 'JAGSummer2012-day3B', + problem_index: '2444', + name: 'Substring', + title: '2444. Substring', + }, + { + id: '2445', + contest_id: 'JAGSummer2012-day3B', + problem_index: '2445', + name: 'MinimumCostPath', + title: '2445. MinimumCostPath', + }, + { + id: '2446', + contest_id: 'JAGSummer2012-day3B', + problem_index: '2446', + name: 'Enumeration', + title: '2446. Enumeration', + }, + { + id: '2447', + contest_id: 'JAGSummer2012-day4', + problem_index: '2447', + name: 'A Two Floors Dungeon', + title: '2447. A Two Floors Dungeon', + }, + { + id: '2448', + contest_id: 'JAGSummer2012-day4', + problem_index: '2448', + name: 'Area Folding', + title: '2448. Area Folding', + }, + { + id: '2449', + contest_id: 'JAGSummer2012-day4', + problem_index: '2449', + name: 'Connect', + title: '2449. Connect', + }, + { + id: '2450', + contest_id: 'JAGSummer2012-day4', + problem_index: '2450', + name: 'Do use segment tree', + title: '2450. Do use segment tree', + }, + { + id: '2451', + contest_id: 'JAGSummer2012-day4', + problem_index: '2451', + name: 'Move on Dice', + title: '2451. Move on Dice', + }, + { + id: '2452', + contest_id: 'JAGSummer2012-day4', + problem_index: '2452', + name: 'Pipeline Plans', + title: '2452. Pipeline Plans', + }, + { + id: '2453', + contest_id: 'JAGSummer2012-day4', + problem_index: '2453', + name: 'Presentation', + title: '2453. Presentation', + }, + { + id: '2454', + contest_id: 'JAGSummer2012-day4', + problem_index: '2454', + name: 'Repairing', + title: '2454. Repairing', + }, + { + id: '2455', + contest_id: 'JAGSummer2012-day4', + problem_index: '2455', + name: 'Sun and Moon', + title: '2455. Sun and Moon', + }, + { + id: '2456', + contest_id: 'JAGSummer2012-day4', + problem_index: '2456', + name: 'Usoperanto', + title: '2456. Usoperanto', + }, + { + id: '2600', + contest_id: 'JAGSummer2013-day2', + problem_index: '2600', + name: 'Koto Distance', + title: '2600. Koto Distance', + }, + { + id: '2601', + contest_id: 'JAGSummer2013-day2', + problem_index: '2601', + name: 'Evacuation Route', + title: '2601. Evacuation Route', + }, + { + id: '2602', + contest_id: 'JAGSummer2013-day2', + problem_index: '2602', + name: 'Apples', + title: '2602. Apples', + }, + { + id: '2603', + contest_id: 'JAGSummer2013-day2', + problem_index: '2603', + name: 'TiMe Table', + title: '2603. TiMe Table', + }, + { + id: '2604', + contest_id: 'JAGSummer2013-day2', + problem_index: '2604', + name: 'Pattern Language', + title: '2604. Pattern Language', + }, + { + id: '2605', + contest_id: 'JAGSummer2013-day2', + problem_index: '2605', + name: 'Social Monsters', + title: '2605. Social Monsters', + }, + { + id: '2606', + contest_id: 'JAGSummer2013-day2', + problem_index: '2606', + name: 'Perm Query', + title: '2606. Perm Query', + }, + { + id: '2607', + contest_id: 'JAGSummer2013-day3', + problem_index: '2607', + name: 'Invest Master', + title: '2607. Invest Master', + }, + { + id: '2608', + contest_id: 'JAGSummer2013-day3', + problem_index: '2608', + name: 'Minus One', + title: '2608. Minus One', + }, + { + id: '2609', + contest_id: 'JAGSummer2013-day3', + problem_index: '2609', + name: 'Wave Attack', + title: '2609. Wave Attack', + }, + { + id: '2610', + contest_id: 'JAGSummer2013-day3', + problem_index: '2610', + name: 'Fast Division', + title: '2610. Fast Division', + }, + { + id: '2611', + contest_id: 'JAGSummer2013-day3', + problem_index: '2611', + name: 'Ordering', + title: '2611. Ordering', + }, + { + id: '2612', + contest_id: 'JAGSummer2013-day3', + problem_index: '2612', + name: 'Phutball', + title: '2612. Phutball', + }, + { + id: '2613', + contest_id: 'JAGSummer2013-day3', + problem_index: '2613', + name: 'Unordered Operators', + title: '2613. Unordered Operators', + }, + { + id: '2614', + contest_id: 'JAGSummer2013-day3', + problem_index: '2614', + name: 'Almost Same Substring', + title: '2614. Almost Same Substring', + }, + { + id: '2615', + contest_id: 'JAGSummer2013-day3', + problem_index: '2615', + name: 'A + B', + title: '2615. A + B', + }, + { + id: '2616', + contest_id: 'JAGSummer2013-day3', + problem_index: '2616', + name: 'KuruKuruKururin', + title: '2616. KuruKuruKururin', + }, + { + id: '2617', + contest_id: 'JAGSummer2013-day3', + problem_index: '2617', + name: 'Air Pollution', + title: '2617. Air Pollution', + }, + { + id: '2618', + contest_id: 'JAGSummer2013-day3', + problem_index: '2618', + name: 'Trip to Kyoto', + title: '2618. Trip to Kyoto', + }, + { + id: '2619', + contest_id: 'JAGSummer2013-day4', + problem_index: '2619', + name: 'Thread Tree', + title: '2619. Thread Tree', + }, + { + id: '2620', + contest_id: 'JAGSummer2013-day4', + problem_index: '2620', + name: 'Trodden Cable', + title: '2620. Trodden Cable', + }, + { + id: '2621', + contest_id: 'JAGSummer2013-day4', + problem_index: '2621', + name: 'Fox Observation', + title: '2621. Fox Observation', + }, + { + id: '2622', + contest_id: 'JAGSummer2013-day4', + problem_index: '2622', + name: 'Removing Magical Tiles', + title: '2622. Removing Magical Tiles', + }, + { + id: '2623', + contest_id: 'JAGSummer2013-day4', + problem_index: '2623', + name: 'Optimal alpha beta pruning', + title: '2623. Optimal alpha beta pruning', + }, + { + id: '2624', + contest_id: 'JAGSummer2013-day4', + problem_index: '2624', + name: 'Graph Automata Player', + title: '2624. Graph Automata Player', + }, + { + id: '2625', + contest_id: 'JAGSummer2013-day4', + problem_index: '2625', + name: 'Spotlight Movement', + title: '2625. Spotlight Movement', + }, + { + id: '2626', + contest_id: 'JAGSummer2013-day4', + problem_index: '2626', + name: 'Gravity Point', + title: '2626. Gravity Point', + }, + { + id: '2627', + contest_id: 'JAGSummer2013-day4', + problem_index: '2627', + name: 'Multi Path Story', + title: '2627. Multi Path Story', + }, + { + id: '2628', + contest_id: 'JAGSummer2013-day4', + problem_index: '2628', + name: 'Rotation Game', + title: '2628. Rotation Game', + }, + { + id: '2629', + contest_id: 'JAGSummer2014-day2', + problem_index: '2629', + name: 'Manhattan', + title: '2629. Manhattan', + }, + { + id: '2630', + contest_id: 'JAGSummer2014-day2', + problem_index: '2630', + name: 'Dictionary', + title: '2630. Dictionary', + }, + { + id: '2631', + contest_id: 'JAGSummer2014-day2', + problem_index: '2631', + name: 'Clique Coloring', + title: '2631. Clique Coloring', + }, + { + id: '2632', + contest_id: 'JAGSummer2014-day2', + problem_index: '2632', + name: 'Dense Amidakuji', + title: '2632. Dense Amidakuji', + }, + { + id: '2633', + contest_id: 'JAGSummer2014-day2', + problem_index: '2633', + name: 'Cellular Automaton', + title: '2633. Cellular Automaton', + }, + { + id: '2634', + contest_id: 'JAGSummer2014-day2', + problem_index: '2634', + name: 'Directions', + title: '2634. Directions', + }, + { + id: '2635', + contest_id: 'JAGSummer2014-day2', + problem_index: '2635', + name: 'Snake', + title: '2635. Snake', + }, + { + id: '2636', + contest_id: 'JAGSummer2014-day2', + problem_index: '2636', + name: 'Distance Sum', + title: '2636. Distance Sum', + }, + { + id: '2637', + contest_id: 'JAGSummer2014-day2', + problem_index: '2637', + name: 'Substring Pairs', + title: '2637. Substring Pairs', + }, + { + id: '2638', + contest_id: 'JAGSummer2014-day2', + problem_index: '2638', + name: 'Hyperrectangle', + title: '2638. Hyperrectangle', + }, + { + id: '2639', + contest_id: 'JAGSummer2014-day4', + problem_index: '2639', + name: 'Yamanote Line', + title: '2639. Yamanote Line', + }, + { + id: '2640', + contest_id: 'JAGSummer2014-day4', + problem_index: '2640', + name: 'Prowler', + title: '2640. Prowler', + }, + { + id: '2641', + contest_id: 'JAGSummer2014-day4', + problem_index: '2641', + name: 'Magic Bullet', + title: '2641. Magic Bullet', + }, + { + id: '2642', + contest_id: 'JAGSummer2014-day4', + problem_index: '2642', + name: 'Dinner', + title: '2642. Dinner', + }, + { + id: '2643', + contest_id: 'JAGSummer2014-day4', + problem_index: '2643', + name: 'AI', + title: '2643. AI', + }, + { + id: '2644', + contest_id: 'JAGSummer2014-day4', + problem_index: '2644', + name: 'Longest Match', + title: '2644. Longest Match', + }, + { + id: '2645', + contest_id: 'JAGSummer2014-day4', + problem_index: '2645', + name: 'Recycle', + title: '2645. Recycle', + }, + { + id: '2646', + contest_id: 'JAGSummer2014-day4', + problem_index: '2646', + name: 'Tournament', + title: '2646. Tournament', + }, + { + id: '2647', + contest_id: 'JAGSummer2014-day4', + problem_index: '2647', + name: 'The Capital', + title: '2647. The Capital', + }, + { + id: '2648', + contest_id: 'JAGSummer2014-day4', + problem_index: '2648', + name: 'Vongress', + title: '2648. Vongress', + }, + { + id: '2706', + contest_id: 'JAGSummer2015-day2', + problem_index: '2706', + name: "Let's Solve Geometric Problems", + title: "2706. Let's Solve Geometric Problems", + }, + { + id: '2707', + contest_id: 'JAGSummer2015-day2', + problem_index: '2707', + name: 'Jail', + title: '2707. Jail', + }, + { + id: '2708', + contest_id: 'JAGSummer2015-day2', + problem_index: '2708', + name: 'ABC Gene', + title: '2708. ABC Gene', + }, + { + id: '2709', + contest_id: 'JAGSummer2015-day2', + problem_index: '2709', + name: 'Dark Room', + title: '2709. Dark Room', + }, + { + id: '2710', + contest_id: 'JAGSummer2015-day2', + problem_index: '2710', + name: 'An Equation in a Mine', + title: '2710. An Equation in a Mine', + }, + { + id: '2711', + contest_id: 'JAGSummer2015-day2', + problem_index: '2711', + name: 'Nearly Cyclic String', + title: '2711. Nearly Cyclic String', + }, + { + id: '2712', + contest_id: 'JAGSummer2015-day2', + problem_index: '2712', + name: 'Escape', + title: '2712. Escape', + }, + { + id: '2713', + contest_id: 'JAGSummer2015-day2', + problem_index: '2713', + name: 'Bit Operation Game', + title: '2713. Bit Operation Game', + }, + { + id: '2714', + contest_id: 'JAGSummer2015-day2', + problem_index: '2714', + name: 'Twin Reverse', + title: '2714. Twin Reverse', + }, + { + id: '2715', + contest_id: 'JAGSummer2015-day2', + problem_index: '2715', + name: 'Connection', + title: '2715. Connection', + }, + { + id: '2716', + contest_id: 'JAGSummer2015-day2', + problem_index: '2716', + name: 'Leapfrog', + title: '2716. Leapfrog', + }, + { + id: '2717', + contest_id: 'JAGSummer2015-day4', + problem_index: '2717', + name: 'Where is the Boundary', + title: '2717. Where is the Boundary', + }, + { + id: '2718', + contest_id: 'JAGSummer2015-day4', + problem_index: '2718', + name: 'Vector Field', + title: '2718. Vector Field', + }, + { + id: '2719', + contest_id: 'JAGSummer2015-day4', + problem_index: '2719', + name: 'Kuru Kuru Sushi', + title: '2719. Kuru Kuru Sushi', + }, + { + id: '2720', + contest_id: 'JAGSummer2015-day4', + problem_index: '2720', + name: 'Identity Function', + title: '2720. Identity Function', + }, + { + id: '2721', + contest_id: 'JAGSummer2015-day4', + problem_index: '2721', + name: 'Enclose Points', + title: '2721. Enclose Points', + }, + { + id: '2722', + contest_id: 'JAGSummer2015-day4', + problem_index: '2722', + name: 'Marching Course', + title: '2722. Marching Course', + }, + { + id: '2723', + contest_id: 'JAGSummer2015-day4', + problem_index: '2723', + name: 'Surface Area of Cubes', + title: '2723. Surface Area of Cubes', + }, + { + id: '2724', + contest_id: 'JAGSummer2015-day4', + problem_index: '2724', + name: 'Laser Cutter', + title: '2724. Laser Cutter', + }, + { + id: '2725', + contest_id: 'JAGSummer2015-day4', + problem_index: '2725', + name: 'Live Programming', + title: '2725. Live Programming', + }, + { + id: '2726', + contest_id: 'JAGSummer2015-day4', + problem_index: '2726', + name: 'Black Company', + title: '2726. Black Company', + }, + { + id: '2845', + contest_id: 'JAGSummer2017-day3', + problem_index: '2845', + name: 'Star in Parentheses', + title: '2845. Star in Parentheses', + }, + { + id: '2846', + contest_id: 'JAGSummer2017-day3', + problem_index: '2846', + name: 'Slimming Plan', + title: '2846. Slimming Plan', + }, + { + id: '2847', + contest_id: 'JAGSummer2017-day3', + problem_index: '2847', + name: 'Ninja Map', + title: '2847. Ninja Map', + }, + { + id: '2848', + contest_id: 'JAGSummer2017-day3', + problem_index: '2848', + name: 'Janken Master', + title: '2848. Janken Master', + }, + { + id: '2849', + contest_id: 'JAGSummer2017-day3', + problem_index: '2849', + name: 'Route Calculator', + title: '2849. Route Calculator', + }, + { + id: '2850', + contest_id: 'JAGSummer2017-day3', + problem_index: '2850', + name: 'Endless BFS', + title: '2850. Endless BFS', + }, + { + id: '2851', + contest_id: 'JAGSummer2017-day3', + problem_index: '2851', + name: 'Low Range-Sum Matrix', + title: '2851. Low Range-Sum Matrix', + }, + { + id: '2852', + contest_id: 'JAGSummer2017-day3', + problem_index: '2852', + name: 'Tiny Room', + title: '2852. Tiny Room', + }, + { + id: '2853', + contest_id: 'JAGSummer2017-day3', + problem_index: '2853', + name: "Librarian's Work", + title: "2853. Librarian's Work", + }, + { + id: '2854', + contest_id: 'JAGSummer2017-day3', + problem_index: '2854', + name: 'Sum Source Detection', + title: '2854. Sum Source Detection', + }, + { + id: '2855', + contest_id: 'JAGSummer2017-day3', + problem_index: '2855', + name: 'Permutation Period', + title: '2855. Permutation Period', + }, + { + id: '2904', + contest_id: 'JAGSummer2018-day3', + problem_index: '2904', + name: 'GuruGuru', + title: '2904. GuruGuru', + }, + { + id: '2905', + contest_id: 'JAGSummer2018-day3', + problem_index: '2905', + name: 'Colorful Drink', + title: '2905. Colorful Drink', + }, + { + id: '2906', + contest_id: 'JAGSummer2018-day3', + problem_index: '2906', + name: "Santa's Gift", + title: "2906. Santa's Gift", + }, + { + id: '2907', + contest_id: 'JAGSummer2018-day3', + problem_index: '2907', + name: 'Prefix Suffix Search', + title: '2907. Prefix Suffix Search', + }, + { + id: '2908', + contest_id: 'JAGSummer2018-day3', + problem_index: '2908', + name: 'Magic Triangles', + title: '2908. Magic Triangles', + }, + { + id: '2909', + contest_id: 'JAGSummer2018-day3', + problem_index: '2909', + name: 'Nim without Zero', + title: '2909. Nim without Zero', + }, + { + id: '2910', + contest_id: 'JAGSummer2018-day3', + problem_index: '2910', + name: 'Additions', + title: '2910. Additions', + }, + { + id: '2911', + contest_id: 'JAGSummer2018-day3', + problem_index: '2911', + name: 'Enlarge Circles', + title: '2911. Enlarge Circles', + }, + { + id: '2912', + contest_id: 'JAGSummer2018-day3', + problem_index: '2912', + name: 'Sum of QQ', + title: '2912. Sum of QQ', + }, + { + id: '2913', + contest_id: 'JAGSummer2018-day3', + problem_index: '2913', + name: 'Prime Routing', + title: '2913. Prime Routing', + }, + { + id: '2914', + contest_id: 'JAGSummer2018-day3', + problem_index: '2914', + name: 'Rough Sorting', + title: '2914. Rough Sorting', + }, + { + id: '2967', + contest_id: 'JAGSummer2019-day1', + problem_index: '2967', + name: 'AIGo', + title: '2967. AIGo', + }, + { + id: '2968', + contest_id: 'JAGSummer2019-day1', + problem_index: '2968', + name: 'Non-trivial Common Divisor', + title: '2968. Non-trivial Common Divisor', + }, + { + id: '2969', + contest_id: 'JAGSummer2019-day1', + problem_index: '2969', + name: 'Universal and Existential Quantifiers', + title: '2969. Universal and Existential Quantifiers', + }, + { + id: '2970', + contest_id: 'JAGSummer2019-day1', + problem_index: '2970', + name: 'Permutation Sort', + title: '2970. Permutation Sort', + }, + { + id: '2971', + contest_id: 'JAGSummer2019-day1', + problem_index: '2971', + name: 'Consistent Trading', + title: '2971. Consistent Trading', + }, + { + id: '2972', + contest_id: 'JAGSummer2019-day1', + problem_index: '2972', + name: 'All your base are belong to us', + title: '2972. All your base are belong to us', + }, + { + id: '2973', + contest_id: 'JAGSummer2019-day1', + problem_index: '2973', + name: 'Route Calculator Returns', + title: '2973. Route Calculator Returns', + }, + { + id: '2974', + contest_id: 'JAGSummer2019-day1', + problem_index: '2974', + name: 'N-by-M grid calculation', + title: '2974. N-by-M grid calculation', + }, + { + id: '2975', + contest_id: 'JAGSummer2019-day1', + problem_index: '2975', + name: 'Zombie Land', + title: '2975. Zombie Land', + }, + { + id: '2976', + contest_id: 'JAGSummer2019-day1', + problem_index: '2976', + name: 'Rooks Game', + title: '2976. Rooks Game', + }, + { + id: '2977', + contest_id: 'JAGSummer2019-day1', + problem_index: '2977', + name: 'Bombing', + title: '2977. Bombing', + }, + { + id: '2978', + contest_id: 'JAGSummer2019-day2', + problem_index: '2978', + name: 'Undo Swapping', + title: '2978. Undo Swapping', + }, + { + id: '2979', + contest_id: 'JAGSummer2019-day2', + problem_index: '2979', + name: 'Spent Fuel Disposal', + title: '2979. Spent Fuel Disposal', + }, + { + id: '2980', + contest_id: 'JAGSummer2019-day2', + problem_index: '2980', + name: 'Cyclic String', + title: '2980. Cyclic String', + }, + { + id: '2981', + contest_id: 'JAGSummer2019-day2', + problem_index: '2981', + name: 'Nose And Lung', + title: '2981. Nose And Lung', + }, + { + id: '2982', + contest_id: 'JAGSummer2019-day2', + problem_index: '2982', + name: 'Expensive Function', + title: '2982. Expensive Function', + }, + { + id: '2983', + contest_id: 'JAGSummer2019-day2', + problem_index: '2983', + name: 'Clique Drawing', + title: '2983. Clique Drawing', + }, + { + id: '2984', + contest_id: 'JAGSummer2019-day2', + problem_index: '2984', + name: 'Human Seperation', + title: '2984. Human Seperation', + }, + { + id: '2985', + contest_id: 'JAGSummer2019-day2', + problem_index: '2985', + name: 'Permutation Score', + title: '2985. Permutation Score', + }, + { + id: '2986', + contest_id: 'JAGSummer2019-day2', + problem_index: '2986', + name: 'Palindrome Compliment', + title: '2986. Palindrome Compliment', + }, + { + id: '2987', + contest_id: 'JAGSummer2019-day2', + problem_index: '2987', + name: 'Prefix Suffix Nim', + title: '2987. Prefix Suffix Nim', + }, + { + id: '2988', + contest_id: 'JAGSummer2019-day3', + problem_index: '2988', + name: 'Union Ball', + title: '2988. Union Ball', + }, + { + id: '2989', + contest_id: 'JAGSummer2019-day3', + problem_index: '2989', + name: 'AddMulSubDiv', + title: '2989. AddMulSubDiv', + }, + { + id: '2990', + contest_id: 'JAGSummer2019-day3', + problem_index: '2990', + name: 'Shuttle Run', + title: '2990. Shuttle Run', + }, + { + id: '2991', + contest_id: 'JAGSummer2019-day3', + problem_index: '2991', + name: 'XORANDORBAN', + title: '2991. XORANDORBAN', + }, + { + id: '2992', + contest_id: 'JAGSummer2019-day3', + problem_index: '2992', + name: 'Red Black Balloons', + title: '2992. Red Black Balloons', + }, + { + id: '2993', + contest_id: 'JAGSummer2019-day3', + problem_index: '2993', + name: 'Invariant Tree', + title: '2993. Invariant Tree', + }, + { + id: '2994', + contest_id: 'JAGSummer2019-day3', + problem_index: '2994', + name: 'Toss Cut Tree', + title: '2994. Toss Cut Tree', + }, + { + id: '2995', + contest_id: 'JAGSummer2019-day3', + problem_index: '2995', + name: 'Colorful Tree', + title: '2995. Colorful Tree', + }, + { + id: '2996', + contest_id: 'JAGSummer2019-day3', + problem_index: '2996', + name: 'Add', + title: '2996. Add', + }, + { + id: '2997', + contest_id: 'JAGSummer2019-day3', + problem_index: '2997', + name: 'Horizontal-Vertical Permutation', + title: '2997. Horizontal-Vertical Permutation', + }, + { + id: '3600', + contest_id: 'JAGSummer2023-day2', + problem_index: '3600', + name: 'Sum of Product of Binomial Coefficients', + title: '3600. Sum of Product of Binomial Coefficients', + }, + { + id: '3601', + contest_id: 'JAGSummer2023-day2', + problem_index: '3601', + name: 'Mercurialist', + title: '3601. Mercurialist', + }, + { + id: '3602', + contest_id: 'JAGSummer2023-day2', + problem_index: '3602', + name: 'Umbrella Queries', + title: '3602. Umbrella Queries', + }, + { + id: '3603', + contest_id: 'JAGSummer2023-day2', + problem_index: '3603', + name: 'Gemini Tree (Ver.Jadeite)', + title: '3603. Gemini Tree (Ver.Jadeite)', + }, + { + id: '3604', + contest_id: 'JAGSummer2023-day2', + problem_index: '3604', + name: 'Gemini Tree (Ver.Lapislazuli)', + title: '3604. Gemini Tree (Ver.Lapislazuli)', + }, + { + id: '3605', + contest_id: 'JAGSummer2023-day2', + problem_index: '3605', + name: 'Tea time in the grand garden', + title: '3605. Tea time in the grand garden', + }, + { + id: '3606', + contest_id: 'JAGSummer2023-day2', + problem_index: '3606', + name: 'Fraises dans une boite', + title: '3606. Fraises dans une boite', + }, + { + id: '3607', + contest_id: 'JAGSummer2023-day2', + problem_index: '3607', + name: 'Empty Quartz', + title: '3607. Empty Quartz', + }, + { + id: '3608', + contest_id: 'JAGSummer2023-day2', + problem_index: '3608', + name: 'Distance Permutation', + title: '3608. Distance Permutation', + }, + { + id: '3609', + contest_id: 'JAGSummer2023-day2', + problem_index: '3609', + name: 'Knight Game', + title: '3609. Knight Game', + }, + { + id: '3610', + contest_id: 'JAGSummer2023-day2', + problem_index: '3610', + name: 'Drifting', + title: '3610. Drifting', + }, + { + id: '3611', + contest_id: 'JAGSummer2023-day2', + problem_index: '3611', + name: 'Disjoint-Sparse-Table Optimization', + title: '3611. Disjoint-Sparse-Table Optimization', + }, + { + id: '3612', + contest_id: 'JAGSummer2023-day3', + problem_index: '3612', + name: 'Roller Coaster', + title: '3612. Roller Coaster', + }, + { + id: '3613', + contest_id: 'JAGSummer2023-day3', + problem_index: '3613', + name: 'Break a Prison', + title: '3613. Break a Prison', + }, + { + id: '3614', + contest_id: 'JAGSummer2023-day3', + problem_index: '3614', + name: 'Camp room assignment', + title: '3614. Camp room assignment', + }, + { + id: '3615', + contest_id: 'JAGSummer2023-day3', + problem_index: '3615', + name: 'Many-hued Tree', + title: '3615. Many-hued Tree', + }, + { + id: '3616', + contest_id: 'JAGSummer2023-day3', + problem_index: '3616', + name: 'Gacha 101', + title: '3616. Gacha 101', + }, + { + id: '3617', + contest_id: 'JAGSummer2023-day3', + problem_index: '3617', + name: 'Digit-only subrectangles', + title: '3617. Digit-only subrectangles', + }, + { + id: '3618', + contest_id: 'JAGSummer2023-day3', + problem_index: '3618', + name: 'Convex Polygon MST', + title: '3618. Convex Polygon MST', + }, + { + id: '3619', + contest_id: 'JAGSummer2023-day3', + problem_index: '3619', + name: 'LCP Queries', + title: '3619. LCP Queries', + }, + { + id: '3620', + contest_id: 'JAGSummer2023-day3', + problem_index: '3620', + name: 'Best parentheses', + title: '3620. Best parentheses', + }, + { + id: '3621', + contest_id: 'JAGSummer2023-day3', + problem_index: '3621', + name: 'Edit distance on table', + title: '3621. Edit distance on table', + }, + { + id: '3622', + contest_id: 'JAGSummer2023-day3', + problem_index: '3622', + name: 'Odd trip plans', + title: '3622. Odd trip plans', + }, + { + id: '3623', + contest_id: 'JAGSummer2024-day2', + problem_index: '3623', + name: 'Add Add Add', + title: '3623. Add Add Add', + }, + { + id: '3624', + contest_id: 'JAGSummer2024-day2', + problem_index: '3624', + name: 'Broken Parentheses', + title: '3624. Broken Parentheses', + }, + { + id: '3625', + contest_id: 'JAGSummer2024-day2', + problem_index: '3625', + name: 'Convenient Banknotes', + title: '3625. Convenient Banknotes', + }, + { + id: '3626', + contest_id: 'JAGSummer2024-day2', + problem_index: '3626', + name: 'Do Make Segment Tree', + title: '3626. Do Make Segment Tree', + }, + { + id: '3627', + contest_id: 'JAGSummer2024-day2', + problem_index: '3627', + name: 'Expression Sum', + title: '3627. Expression Sum', + }, + { + id: '3628', + contest_id: 'JAGSummer2024-day2', + problem_index: '3628', + name: 'Flip Path on Rooted Tree', + title: '3628. Flip Path on Rooted Tree', + }, + { + id: '3629', + contest_id: 'JAGSummer2024-day2', + problem_index: '3629', + name: 'Give Me a Lot of Triangles', + title: '3629. Give Me a Lot of Triangles', + }, + { + id: '3630', + contest_id: 'JAGSummer2024-day2', + problem_index: '3630', + name: 'Half Plane Painting', + title: '3630. Half Plane Painting', + }, + { + id: '3631', + contest_id: 'JAGSummer2024-day2', + problem_index: '3631', + name: 'I Love Square Number', + title: '3631. I Love Square Number', + }, + { + id: '3632', + contest_id: 'JAGSummer2024-day2', + problem_index: '3632', + name: 'Just Believe in Binary Search', + title: '3632. Just Believe in Binary Search', + }, + { + id: '3633', + contest_id: 'JAGSummer2024-day2', + problem_index: '3633', + name: 'K-th Nondivisor', + title: '3633. K-th Nondivisor', + }, + { + id: '3634', + contest_id: 'JAGSummer2024-day2', + problem_index: '3634', + name: 'Linear Time Inversion Number', + title: '3634. Linear Time Inversion Number', + }, + { + id: '3635', + contest_id: 'JAGSummer2024-day2', + problem_index: '3635', + name: 'Max Sum of GCD', + title: '3635. Max Sum of GCD', + }, + { + id: '3636', + contest_id: 'JAGSummer2024-day2', + problem_index: '3636', + name: 'Noncoprime Subsequences', + title: '3636. Noncoprime Subsequences', + }, + { + id: '3637', + contest_id: 'JAGSummer2024-day3', + problem_index: '3637', + name: 'Tower Defense', + title: '3637. Tower Defense', + }, + { + id: '3638', + contest_id: 'JAGSummer2024-day3', + problem_index: '3638', + name: 'Renovation', + title: '3638. Renovation', + }, + { + id: '3639', + contest_id: 'JAGSummer2024-day3', + problem_index: '3639', + name: 'Commutativity', + title: '3639. Commutativity', + }, + { + id: '3640', + contest_id: 'JAGSummer2024-day3', + problem_index: '3640', + name: 'Paper Cut Game', + title: '3640. Paper Cut Game', + }, + { + id: '3641', + contest_id: 'JAGSummer2024-day3', + problem_index: '3641', + name: 'Ball Passing', + title: '3641. Ball Passing', + }, + { + id: '3642', + contest_id: 'JAGSummer2024-day3', + problem_index: '3642', + name: 'Halfway Through the Book', + title: '3642. Halfway Through the Book', + }, + { + id: '3644', + contest_id: 'JAGSummer2024-day3', + problem_index: '3644', + name: 'Coins on a Tree', + title: '3644. Coins on a Tree', + }, + { + id: '3645', + contest_id: 'JAGSummer2024-day3', + problem_index: '3645', + name: 'Fragile Tree', + title: '3645. Fragile Tree', + }, + { + id: '3646', + contest_id: 'JAGSummer2024-day3', + problem_index: '3646', + name: 'Draw the Tree', + title: '3646. Draw the Tree', + }, + { + id: '3647', + contest_id: 'JAGSummer2024-day3', + problem_index: '3647', + name: 'Equal or Not Equal', + title: '3647. Equal or Not Equal', + }, + { + id: '2073', + contest_id: 'JAGWinter2006-day2', + problem_index: '2073', + name: 'The Phantom', + title: '2073. The Phantom', + }, + { + id: '2074', + contest_id: 'JAGWinter2006-day2', + problem_index: '2074', + name: 'Rakunarok', + title: '2074. Rakunarok', + }, + { + id: '2075', + contest_id: 'JAGWinter2006-day3', + problem_index: '2075', + name: 'Dock to the Future', + title: '2075. Dock to the Future', + }, + { + id: '2076', + contest_id: 'JAGWinter2006-day3', + problem_index: '2076', + name: 'Flame of Nucleus', + title: '2076. Flame of Nucleus', + }, + { + id: '2077', + contest_id: 'JAGWinter2006-day3', + problem_index: '2077', + name: 'Resource', + title: '2077. Resource', + }, + { + id: '2078', + contest_id: 'JAGWinter2006-day3', + problem_index: '2078', + name: 'Exact Arithmetic', + title: '2078. Exact Arithmetic', + }, + { + id: '2112', + contest_id: 'JAGWinter2007-day2', + problem_index: '2112', + name: 'Defend the Nation', + title: '2112. Defend the Nation', + }, + { + id: '2113', + contest_id: 'JAGWinter2007-day2', + problem_index: '2113', + name: 'Electrophoretic', + title: '2113. Electrophoretic', + }, + { + id: '2114', + contest_id: 'JAGWinter2007-day2', + problem_index: '2114', + name: 'Median Filter', + title: '2114. Median Filter', + }, + { + id: '2115', + contest_id: 'JAGWinter2007-day2', + problem_index: '2115', + name: 'Life Game', + title: '2115. Life Game', + }, + { + id: '2116', + contest_id: 'JAGWinter2007-day2', + problem_index: '2116', + name: 'Subdividing a Land', + title: '2116. Subdividing a Land', + }, + { + id: '2117', + contest_id: 'JAGWinter2007-day2', + problem_index: '2117', + name: 'Connect Line Segments', + title: '2117. Connect Line Segments', + }, + { + id: '2118', + contest_id: 'JAGWinter2007-day2', + problem_index: '2118', + name: 'Oil Company', + title: '2118. Oil Company', + }, + { + id: '2119', + contest_id: 'JAGWinter2007-day2', + problem_index: '2119', + name: 'Finding the Top RPS Player', + title: '2119. Finding the Top RPS Player', + }, + { + id: '2120', + contest_id: 'JAGWinter2007-day2', + problem_index: '2120', + name: 'Revenge of Voronoi', + title: '2120. Revenge of Voronoi', + }, + { + id: '2121', + contest_id: 'JAGWinter2007-day2', + problem_index: '2121', + name: 'Castle Wall', + title: '2121. Castle Wall', + }, + { + id: '2122', + contest_id: 'JAGWinter2007-day3', + problem_index: '2122', + name: 'Optimization of Combinatorial Circuits', + title: '2122. Optimization of Combinatorial Circuits', + }, + { + id: '2123', + contest_id: 'JAGWinter2007-day3', + problem_index: '2123', + name: 'Divisor Function', + title: '2123. Divisor Function', + }, + { + id: '2124', + contest_id: 'JAGWinter2007-day3', + problem_index: '2124', + name: 'Magical Dungeon', + title: '2124. Magical Dungeon', + }, + { + id: '2125', + contest_id: 'JAGWinter2007-day3', + problem_index: '2125', + name: 'Land Mark', + title: '2125. Land Mark', + }, + { + id: '2126', + contest_id: 'JAGWinter2007-day3', + problem_index: '2126', + name: 'Alien Pianist', + title: '2126. Alien Pianist', + }, + { + id: '2127', + contest_id: 'JAGWinter2007-day3', + problem_index: '2127', + name: 'Japanese Style Pub', + title: '2127. Japanese Style Pub', + }, + { + id: '2128', + contest_id: 'JAGWinter2007-day3', + problem_index: '2128', + name: 'Two Rings', + title: '2128. Two Rings', + }, + { + id: '2129', + contest_id: 'JAGWinter2007-day3', + problem_index: '2129', + name: 'Text Justification', + title: '2129. Text Justification', + }, + { + id: '2130', + contest_id: 'JAGWinter2007-day3', + problem_index: '2130', + name: 'Billion Million Thousand', + title: '2130. Billion Million Thousand', + }, + { + id: '2457', + contest_id: 'JAGWinter2008-day2', + problem_index: '2457', + name: 'Adhoc Translation', + title: '2457. Adhoc Translation', + }, + { + id: '2458', + contest_id: 'JAGWinter2008-day2', + problem_index: '2458', + name: 'Artistic Art Museum', + title: '2458. Artistic Art Museum', + }, + { + id: '2459', + contest_id: 'JAGWinter2008-day2', + problem_index: '2459', + name: 'Complex Integer Solutions', + title: '2459. Complex Integer Solutions', + }, + { + id: '2460', + contest_id: 'JAGWinter2008-day2', + problem_index: '2460', + name: 'Dial Key', + title: '2460. Dial Key', + }, + { + id: '2461', + contest_id: 'JAGWinter2008-day2', + problem_index: '2461', + name: 'Dungeon Master', + title: '2461. Dungeon Master', + }, + { + id: '2462', + contest_id: 'JAGWinter2008-day2', + problem_index: '2462', + name: 'Exciting Bicycle', + title: '2462. Exciting Bicycle', + }, + { + id: '2463', + contest_id: 'JAGWinter2008-day2', + problem_index: '2463', + name: 'Fuel Problem', + title: '2463. Fuel Problem', + }, + { + id: '2464', + contest_id: 'JAGWinter2008-day2', + problem_index: '2464', + name: 'Magic Walls', + title: '2464. Magic Walls', + }, + { + id: '2465', + contest_id: 'JAGWinter2008-day2', + problem_index: '2465', + name: 'Sort by Hand', + title: '2465. Sort by Hand', + }, + { + id: '2466', + contest_id: 'JAGWinter2008-day2', + problem_index: '2466', + name: 'Substring Expression', + title: '2466. Substring Expression', + }, + { + id: '2467', + contest_id: 'JAGWinter2008-day2', + problem_index: '2467', + name: 'Up Above the World So High', + title: '2467. Up Above the World So High', + }, + { + id: '2468', + contest_id: 'JAGWinter2008-day3', + problem_index: '2468', + name: 'Cache Control', + title: '2468. Cache Control', + }, + { + id: '2469', + contest_id: 'JAGWinter2008-day3', + problem_index: '2469', + name: 'Cover Time', + title: '2469. Cover Time', + }, + { + id: '2470', + contest_id: 'JAGWinter2008-day3', + problem_index: '2470', + name: 'Craftsman', + title: '2470. Craftsman', + }, + { + id: '2471', + contest_id: 'JAGWinter2008-day3', + problem_index: '2471', + name: 'Divide the Water', + title: '2471. Divide the Water', + }, + { + id: '2472', + contest_id: 'JAGWinter2008-day3', + problem_index: '2472', + name: "Mickle's Beam", + title: "2472. Mickle's Beam", + }, + { + id: '2473', + contest_id: 'JAGWinter2008-day3', + problem_index: '2473', + name: 'Poor Computer', + title: '2473. Poor Computer', + }, + { + id: '2474', + contest_id: 'JAGWinter2008-day3', + problem_index: '2474', + name: 'Riffle Swap', + title: '2474. Riffle Swap', + }, + { + id: '2475', + contest_id: 'JAGWinter2008-day3', + problem_index: '2475', + name: 'Round Table', + title: '2475. Round Table', + }, + { + id: '2476', + contest_id: 'JAGWinter2008-day3', + problem_index: '2476', + name: 'Strange Currency System', + title: '2476. Strange Currency System', + }, + { + id: '2477', + contest_id: 'JAGWinter2008-day3', + problem_index: '2477', + name: 'Tangram', + title: '2477. Tangram', + }, + { + id: '2478', + contest_id: 'JAGWinter2008-day3', + problem_index: '2478', + name: 'Trading Ship', + title: '2478. Trading Ship', + }, + { + id: '2479', + contest_id: 'JAGWinter2009', + problem_index: '2479', + name: 'Approximate Circle', + title: '2479. Approximate Circle', + }, + { + id: '2480', + contest_id: 'JAGWinter2009', + problem_index: '2480', + name: 'Blame Game', + title: '2480. Blame Game', + }, + { + id: '2481', + contest_id: 'JAGWinter2009', + problem_index: '2481', + name: 'Earn Big', + title: '2481. Earn Big', + }, + { + id: '2482', + contest_id: 'JAGWinter2009', + problem_index: '2482', + name: 'Exportation in Space', + title: '2482. Exportation in Space', + }, + { + id: '2483', + contest_id: 'JAGWinter2009', + problem_index: '2483', + name: 'Laser Puzzle', + title: '2483. Laser Puzzle', + }, + { + id: '2484', + contest_id: 'JAGWinter2009', + problem_index: '2484', + name: 'Magnum Tornado', + title: '2484. Magnum Tornado', + }, + { + id: '2485', + contest_id: 'JAGWinter2009', + problem_index: '2485', + name: "Nezumi's Treasure", + title: "2485. Nezumi's Treasure", + }, + { + id: '2486', + contest_id: 'JAGWinter2009', + problem_index: '2486', + name: 'Testing Sorting Networks', + title: '2486. Testing Sorting Networks', + }, + { + id: '2487', + contest_id: 'JAGWinter2009', + problem_index: '2487', + name: 'Train King', + title: '2487. Train King', + }, + { + id: '2488', + contest_id: 'JAGWinter2009', + problem_index: '2488', + name: 'Tree Construction', + title: '2488. Tree Construction', + }, + { + id: '2369', + contest_id: 'JAGWinter2010-day3', + problem_index: '2369', + name: 'CatChecker', + title: '2369. CatChecker', + }, + { + id: '2370', + contest_id: 'JAGWinter2010-day3', + problem_index: '2370', + name: 'RabbitWalking', + title: '2370. RabbitWalking', + }, + { + id: '2371', + contest_id: 'JAGWinter2010-day3', + problem_index: '2371', + name: 'TransferTrain', + title: '2371. TransferTrain', + }, + { + id: '2372', + contest_id: 'JAGWinter2010-day3', + problem_index: '2372', + name: 'IkaNumber', + title: '2372. IkaNumber', + }, + { + id: '2373', + contest_id: 'JAGWinter2010-day3', + problem_index: '2373', + name: 'HullMarathon', + title: '2373. HullMarathon', + }, + { + id: '2374', + contest_id: 'JAGWinter2010-day3', + problem_index: '2374', + name: 'RabbitLunch', + title: '2374. RabbitLunch', + }, + { + id: '2375', + contest_id: 'JAGWinter2010-day3', + problem_index: '2375', + name: 'CarrotBreeding', + title: '2375. CarrotBreeding', + }, + { + id: '2376', + contest_id: 'JAGWinter2010-day3', + problem_index: '2376', + name: 'DisconnectedGame', + title: '2376. DisconnectedGame', + }, + { + id: '2377', + contest_id: 'JAGWinter2010-day3', + problem_index: '2377', + name: 'ThreeRooks', + title: '2377. ThreeRooks', + }, + { + id: '2378', + contest_id: 'JAGWinter2010-day3', + problem_index: '2378', + name: 'SolveMe', + title: '2378. SolveMe', + }, + { + id: '2379', + contest_id: 'JAGWinter2010-day4', + problem_index: '2379', + name: 'Bicube', + title: '2379. Bicube', + }, + { + id: '2380', + contest_id: 'JAGWinter2010-day4', + problem_index: '2380', + name: 'Bubble Puzzle', + title: '2380. Bubble Puzzle', + }, + { + id: '2381', + contest_id: 'JAGWinter2010-day4', + problem_index: '2381', + name: 'Fair Game', + title: '2381. Fair Game', + }, + { + id: '2382', + contest_id: 'JAGWinter2010-day4', + problem_index: '2382', + name: 'King Slime', + title: '2382. King Slime', + }, + { + id: '2383', + contest_id: 'JAGWinter2010-day4', + problem_index: '2383', + name: 'Rabbit Game Playing', + title: '2383. Rabbit Game Playing', + }, + { + id: '2384', + contest_id: 'JAGWinter2010-day4', + problem_index: '2384', + name: 'Rabbit Jumping', + title: '2384. Rabbit Jumping', + }, + { + id: '2385', + contest_id: 'JAGWinter2010-day4', + problem_index: '2385', + name: 'Shelter', + title: '2385. Shelter', + }, + { + id: '2386', + contest_id: 'JAGWinter2010-day4', + problem_index: '2386', + name: 'Sightseeing Tour', + title: '2386. Sightseeing Tour', + }, + { + id: '2387', + contest_id: 'JAGWinter2010-day4', + problem_index: '2387', + name: 'Tampopo Machine', + title: '2387. Tampopo Machine', + }, + { + id: '2388', + contest_id: 'JAGWinter2010-day4', + problem_index: '2388', + name: 'Top of the Hill', + title: '2388. Top of the Hill', + }, + { + id: '2340', + contest_id: 'JAGWinter2011', + problem_index: '2340', + name: "Carpenters' Language", + title: "2340. Carpenters' Language", + }, + { + id: '2341', + contest_id: 'JAGWinter2011', + problem_index: '2341', + name: 'Kth Sentence', + title: '2341. Kth Sentence', + }, + { + id: '2342', + contest_id: 'JAGWinter2011', + problem_index: '2342', + name: 'Light Road', + title: '2342. Light Road', + }, + { + id: '2343', + contest_id: 'JAGWinter2011', + problem_index: '2343', + name: 'Matrix Operation', + title: '2343. Matrix Operation', + }, + { + id: '2344', + contest_id: 'JAGWinter2011', + problem_index: '2344', + name: 'Multi Ending Story', + title: '2344. Multi Ending Story', + }, + { + id: '2345', + contest_id: 'JAGWinter2011', + problem_index: '2345', + name: 'Network Reliability', + title: '2345. Network Reliability', + }, + { + id: '2346', + contest_id: 'JAGWinter2011', + problem_index: '2346', + name: 'Runaway Domino', + title: '2346. Runaway Domino', + }, + { + id: '2347', + contest_id: 'JAGWinter2011', + problem_index: '2347', + name: 'Sunny Graph', + title: '2347. Sunny Graph', + }, + { + id: '2348', + contest_id: 'JAGWinter2011', + problem_index: '2348', + name: 'Testing Circuits', + title: '2348. Testing Circuits', + }, + { + id: '2349', + contest_id: 'JAGWinter2011', + problem_index: '2349', + name: 'World Trip', + title: '2349. World Trip', + }, ]; diff --git a/src/lib/utils/contest.ts b/src/lib/utils/contest.ts index d7e704e36..803c5d045 100644 --- a/src/lib/utils/contest.ts +++ b/src/lib/utils/contest.ts @@ -1,5 +1,7 @@ import { ContestType, type ContestPrefix, type ContestLabelTranslations } from '$lib/types/contest'; +const regexForJag = /^JAG(Prelim|Regional|Summer|Winter|Spring)\d{4}(-day\d+[A-Z]?)?$/; + // See: // https://github.com/kenkoooo/AtCoderProblems/blob/master/atcoder-problems-frontend/src/utils/ContestClassifier.ts export const classifyContest = (contest_id: string) => { @@ -101,7 +103,7 @@ export const classifyContest = (contest_id: string) => { return ContestType.AOJ_ICPC; } - if (/^JAG(Prelim|Regional|Summer|Winter|Spring)\d*$/.exec(contest_id)) { + if (regexForJag.exec(contest_id)) { return ContestType.AOJ_JAG; } @@ -456,7 +458,7 @@ export const getContestNameLabel = (contestId: string) => { return getAojContestLabel(ICPC_TRANSLATIONS, contestId); } - if (contestId.startsWith('JAG')) { + if (regexForJag.exec(contestId)) { return getAojContestLabel(JAG_TRANSLATIONS, contestId); } @@ -699,6 +701,10 @@ const PCK_TRANSLATIONS = { const JAG_TRANSLATIONS = { Prelim: ' 模擬国内 ', Regional: ' 模擬地区 ', + Summer: ' 夏合宿 ', + Winter: ' 冬合宿 ', + Spring: ' 春合宿 ', + '-day': ' Day', }; const ICPC_TRANSLATIONS = { @@ -733,7 +739,7 @@ function isAojContest(contestId: string): boolean { return ( aojCoursePrefixes.has(contestId) || contestId.startsWith('PCK') || - contestId.startsWith('JAG') || + regexForJag.test(contestId) || contestId.startsWith('ICPC') ); } diff --git a/src/test/lib/utils/contest.test.ts b/src/test/lib/utils/contest.test.ts index 505ea78a7..dea8e29dd 100644 --- a/src/test/lib/utils/contest.test.ts +++ b/src/test/lib/utils/contest.test.ts @@ -205,7 +205,7 @@ describe('Contest', () => { }); }); - describe('when contest_id mean AOJ JAG (prelim and regional) ', () => { + describe('when contest_id means AOJ JAG', () => { TestCasesForContestType.aojJag.forEach(({ name, value }) => { runTests(`${name}`, [value], ({ contestId, expected }: TestCaseForContestType) => { expect(classifyContest(contestId)).toEqual(expected); @@ -213,6 +213,15 @@ describe('Contest', () => { }); }); + describe('when contest_id is JAG-like but has no 4-digit year', () => { + test.each(['JAGSummer-day2', 'JAGPrelim', 'JAGRegional'])( + 'returns null for %s', + (contestId) => { + expect(classifyContest(contestId)).toBeNull(); + }, + ); + }); + describe('when contest_id means AOJ ICPC (prelim and regional)', () => { TestCasesForContestType.aojIcpc.forEach(({ name, value }) => { runTests(`${name}`, [value], ({ contestId, expected }: TestCaseForContestType) => { @@ -411,7 +420,7 @@ describe('Contest', () => { }); }); - describe('when contest_id means AOJ JAG (prelim and regional)', () => { + describe('when contest_id means AOJ JAG', () => { TestCasesForContestType.aojJag.forEach(({ name, value }) => { runTests(`${name}`, [value], ({ contestId, expected }: TestCaseForContestType) => { expect(getContestPriority(contestId)).toEqual(contestTypePriorities.get(expected)); @@ -497,6 +506,23 @@ describe('Contest', () => { }); describe('AOJ', () => { + describe('when contest_id means AOJ JAG', () => { + TestCasesForContestNameLabel.aojJag.forEach(({ name, value }) => { + runTests(`${name}`, [value], ({ contestId, expected }: TestCaseForContestNameLabel) => { + expect(getContestNameLabel(contestId)).toEqual(expected); + }); + }); + }); + + describe('when contest_id is JAG-like but has no 4-digit year', () => { + test.each(['JAGSummer-day2', 'JAGPrelim', 'JAGRegional-day1'])( + 'does not return a JAG-style label for %s', + (contestId) => { + expect(getContestNameLabel(contestId)).not.toMatch(/^(/); + }, + ); + }); + describe('when contest_id means AOJ ICPC (prelim and regional)', () => { TestCasesForContestNameLabel.aojIcpc.forEach(({ name, value }) => { runTests(`${name}`, [value], ({ contestId, expected }: TestCaseForContestNameLabel) => { @@ -667,7 +693,7 @@ describe('Contest', () => { }); }); - describe('when contest_id means AOJ JAG (prelim and regional)', () => { + describe('when contest_id means AOJ JAG', () => { TestCasesForContestNameAndTaskIndex.aojJag.forEach(({ name, value }) => { runTests( `${name}`, @@ -679,6 +705,15 @@ describe('Contest', () => { }); }); + describe('when contest_id is JAG-like but has no 4-digit year', () => { + test.each(['JAGSummer-day2', 'JAGPrelim', 'JAGRegional-day1'])( + 'does not produce AOJ format for %s', + (contestId) => { + expect(addContestNameToTaskIndex(contestId, '1')).not.toMatch(/^AOJ /); + }, + ); + }); + describe('when contest_id means AOJ ICPC (prelim and regional)', () => { TestCasesForContestNameAndTaskIndex.aojIcpc.forEach(({ name, value }) => { runTests( diff --git a/src/test/lib/utils/test_cases/contest_name_and_task_index.ts b/src/test/lib/utils/test_cases/contest_name_and_task_index.ts index 3cceb6348..b877863ce 100644 --- a/src/test/lib/utils/test_cases/contest_name_and_task_index.ts +++ b/src/test/lib/utils/test_cases/contest_name_and_task_index.ts @@ -814,9 +814,34 @@ const generateAojJagTestCases = (contestIds: JagContestIds, taskIndices: string[ `AOJ ${taskIndex}(JAG${contestId.replace('Prelim', ' 模擬国内 ').replace('Regional', ' 模擬地区 ')})`, ); -export const aojJag = Object.entries(AOJ_JAG_TEST_DATA).flatMap(([contestId, tasks]) => - generateAojJagTestCases(Array(tasks.tasks.length).fill(contestId), tasks.tasks), -); +const generateAojJagCampTestCases = (contestIds: string[], taskIndices: string[]) => + generateContestTestCases( + contestIds, + taskIndices, + (contestId, taskIndex) => `AOJ, JAG${contestId} - ${taskIndex}`, + (contestId, taskIndex) => + `AOJ ${taskIndex}(JAG${contestId + .replace('Summer', ' 夏合宿 ') + .replace('Winter', ' 冬合宿 ') + .replace('Spring', ' 春合宿 ') + .replace('-day', ' Day')})`, + ); + +const AOJ_JAG_CAMP_TEST_DATA: Record = { + 'Summer2006-day2': { tasks: ['2058', '2059', '2060'] }, + Winter2009: { tasks: ['2479', '2480', '2481'] }, + Spring2012: { tasks: ['2389', '2390', '2391'] }, + 'Summer2012-day3A': { tasks: ['2434', '2435', '2436'] }, +}; + +export const aojJag = [ + ...Object.entries(AOJ_JAG_TEST_DATA).flatMap(([contestId, tasks]) => + generateAojJagTestCases(Array(tasks.tasks.length).fill(contestId), tasks.tasks), + ), + ...Object.entries(AOJ_JAG_CAMP_TEST_DATA).flatMap(([contestId, tasks]) => + generateAojJagCampTestCases(Array(tasks.tasks.length).fill(contestId), tasks.tasks), + ), +]; /** * Test cases for AOJ ICPC contests diff --git a/src/test/lib/utils/test_cases/contest_name_labels.ts b/src/test/lib/utils/test_cases/contest_name_labels.ts index 53b456637..7e1681ea3 100644 --- a/src/test/lib/utils/test_cases/contest_name_labels.ts +++ b/src/test/lib/utils/test_cases/contest_name_labels.ts @@ -87,6 +87,25 @@ export const fps24 = [ }), ]; +export const aojJag = [ + createTestCaseForContestNameLabel('AOJ, JAG Summer 2024 day2')({ + contestId: 'JAGSummer2024-day2', + expected: '(JAG 夏合宿 2024 Day2)', + }), + createTestCaseForContestNameLabel('AOJ, JAG Winter 2009')({ + contestId: 'JAGWinter2009', + expected: '(JAG 冬合宿 2009)', + }), + createTestCaseForContestNameLabel('AOJ, JAG Spring 2012')({ + contestId: 'JAGSpring2012', + expected: '(JAG 春合宿 2012)', + }), + createTestCaseForContestNameLabel('AOJ, JAG Summer 2012 day3A')({ + contestId: 'JAGSummer2012-day3A', + expected: '(JAG 夏合宿 2012 Day3A)', + }), +]; + export const aojIcpc = [ createTestCaseForContestNameLabel('ICPC Prelim 2024')({ contestId: 'ICPCPrelim2024', diff --git a/src/test/lib/utils/test_cases/contest_type.ts b/src/test/lib/utils/test_cases/contest_type.ts index f8ff5b779..6dfdc8e20 100644 --- a/src/test/lib/utils/test_cases/contest_type.ts +++ b/src/test/lib/utils/test_cases/contest_type.ts @@ -631,6 +631,18 @@ const aojJagContestData = [ { name: 'AOJ, JAG Regional 2020', contestId: 'JAGRegional2020' }, { name: 'AOJ, JAG Regional 2021', contestId: 'JAGRegional2021' }, { name: 'AOJ, JAG Regional 2022', contestId: 'JAGRegional2022' }, + { name: 'AOJ, JAG Spring 2012', contestId: 'JAGSpring2012' }, + { name: 'AOJ, JAG Spring 2015', contestId: 'JAGSpring2015' }, + { name: 'AOJ, JAG Winter 2009', contestId: 'JAGWinter2009' }, + { name: 'AOJ, JAG Winter 2011', contestId: 'JAGWinter2011' }, + { name: 'AOJ, JAG Summer 2006 day1', contestId: 'JAGSummer2006-day1' }, + { name: 'AOJ, JAG Summer 2006 day2', contestId: 'JAGSummer2006-day2' }, + { name: 'AOJ, JAG Winter 2006 day2', contestId: 'JAGWinter2006-day2' }, + { name: 'AOJ, JAG Summer 2023 day2', contestId: 'JAGSummer2023-day2' }, + { name: 'AOJ, JAG Summer 2024 day2', contestId: 'JAGSummer2024-day2' }, + { name: 'AOJ, JAG Summer 2024 day3', contestId: 'JAGSummer2024-day3' }, + { name: 'AOJ, JAG Summer 2012 day3A', contestId: 'JAGSummer2012-day3A' }, + { name: 'AOJ, JAG Summer 2012 day3B', contestId: 'JAGSummer2012-day3B' }, ]; export const aojJag = aojJagContestData.map(({ name, contestId }) =>