function initializeCompetition(teamID) { const team = validateTeam(teamID); const problems = loadProblemSet(); const session = { team: team, problems: problems, startTime: new Date(), submissions: [], score: 0 }; return session; } class CompetitionManager { constructor() { this.teams = []; this.leaderboard = []; this.timeLimit = 4 * 60 * 60 * 1000; } registerTeam(team) { const validatedTeam = { ...team, registeredAt: new Date(), status: "registered" }; this.teams.push(validatedTeam); } startCompetition() { return this.teams.map(team => this.initializeSession(team)); } submitSolution(teamID, problemID, solution) { const team = this.teams.find(t => t.id === teamID); if (!team) return { error: "Team not found" }; const result = this.evaluateSolution(solution, problemID); team.submissions.push({ problemID, solution, result, timestamp: new Date() }); this.updateScore(team, result); return result; } } const judgeSystem = { testCases: new Map(), runTests(solution, problemID) { const tests = this.testCases.get(problemID); let passed = 0; for (const test of tests) { try { const output = solution(test.input); if (output === test.expected) passed++; } catch (error) { console.log("Runtime error:", error); } } return { passed, total: tests.length, score: (passed / tests.length) * 100 }; } }; function initializeCompetition(teamID) { const team = validateTeam(teamID); const problems = loadProblemSet(); const session = { team: team, problems: problems, startTime: new Date(), submissions: [], score: 0 }; return session; } class CompetitionManager { constructor() { this.teams = []; this.leaderboard = []; this.timeLimit = 4 * 60 * 60 * 1000; } registerTeam(team) { const validatedTeam = { ...team, registeredAt: new Date(), status: "registered" }; this.teams.push(validatedTeam); } startCompetition() { return this.teams.map(team => this.initializeSession(team)); } submitSolution(teamID, problemID, solution) { const team = this.teams.find(t => t.id === teamID); if (!team) return { error: "Team not found" }; const result = this.evaluateSolution(solution, problemID); team.submissions.push({ problemID, solution, result, timestamp: new Date() }); this.updateScore(team, result); return result; } } const judgeSystem = { testCases: new Map(), runTests(solution, problemID) { const tests = this.testCases.get(problemID); let passed = 0; for (const test of tests) { try { const output = solution(test.input); if (output === test.expected) passed++; } catch (error) { console.log("Runtime error:", error); } } return { passed, total: tests.length, score: (passed / tests.length) * 100 }; } }; function initializeCompetition(teamID) { const team = validateTeam(teamID); const problems = loadProblemSet(); const session = { team: team, problems: problems, startTime: new Date(), submissions: [], score: 0 }; return session; } class CompetitionManager { constructor() { this.teams = []; this.leaderboard = []; this.timeLimit = 4 * 60 * 60 * 1000; } registerTeam(team) { const validatedTeam = { ...team, registeredAt: new Date(), status: "registered" }; this.teams.push(validatedTeam); } startCompetition() { return this.teams.map(team => this.initializeSession(team)); } submitSolution(teamID, problemID, solution) { const team = this.teams.find(t => t.id === teamID); if (!team) return { error: "Team not found" }; const result = this.evaluateSolution(solution, problemID); team.submissions.push({ problemID, solution, result, timestamp: new Date() }); this.updateScore(team, result); return result; } } const judgeSystem = { testCases: new Map(), runTests(solution, problemID) { const tests = this.testCases.get(problemID); let passed = 0; for (const test of tests) { try { const output = solution(test.input); if (output === test.expected) passed++; } catch (error) { console.log("Runtime error:", error); } } return { passed, total: tests.length, score: (passed / tests.length) * 100 }; } }; function initializeCompetition(teamID) { const team = validateTeam(teamID); const problems = loadProblemSet(); const session = { team: team, problems: problems, startTime: new Date(), submissions: [], score: 0 }; return session; } class CompetitionManager { constructor() { this.teams = []; this.leaderboard = []; this.timeLimit = 4 * 60 * 60 * 1000; } registerTeam(team) { const validatedTeam = { ...team, registeredAt: new Date(), status: "registered" }; this.teams.push(validatedTeam); } startCompetition() { return this.teams.map(team => this.initializeSession(team)); } submitSolution(teamID, problemID, solution) { const team = this.teams.find(t => t.id === teamID); if (!team) return { error: "Team not found" }; const result = this.evaluateSolution(solution, problemID); team.submissions.push({ problemID, solution, result, timestamp: new Date() }); this.updateScore(team, result); return result; } } const judgeSystem = { testCases: new Map(), runTests(solution, problemID) { const tests = this.testCases.get(problemID); let passed = 0; for (const test of tests) { try { const output = solution(test.input); if (output === test.expected) passed++; } catch (error) { console.log("Runtime error:", error); } } return { passed, total: tests.length, score: (passed / tests.length) * 100 }; } }; function initializeCompetition(teamID) { const team = validateTeam(teamID); const problems = loadProblemSet(); const session = { team: team, problems: problems, startTime: new Date(), submissions: [], score: 0 }; return session; } class CompetitionManager { constructor() { this.teams = []; this.leaderboard = []; this.timeLimit = 4 * 60 * 60 * 1000; } registerTeam(team) { const validatedTeam = { ...team, registeredAt: new Date(), status: "registered" }; this.teams.push(validatedTeam); } startCompetition() { return this.teams.map(team => this.initializeSession(team)); } submitSolution(teamID, problemID, solution) { const team = this.teams.find(t => t.id === teamID); if (!team) return { error: "Team not found" }; const result = this.evaluateSolution(solution, problemID); team.submissions.push({ problemID, solution, result, timestamp: new Date() }); this.updateScore(team, result); return result; } } const judgeSystem = { testCases: new Map(), runTests(solution, problemID) { const tests = this.testCases.get(problemID); let passed = 0; for (const test of tests) { try { const output = solution(test.input); if (output === test.expected) passed++; } catch (error) { console.log("Runtime error:", error); } } return { passed, total: tests.length, score: (passed / tests.length) * 100 }; } }; function initializeCompetition(teamID) { const team = validateTeam(teamID); const problems = loadProblemSet(); const session = { team: team, problems: problems, startTime: new Date(), submissions: [], score: 0 }; return session; } class CompetitionManager { constructor() { this.teams = []; this.leaderboard = []; this.timeLimit = 4 * 60 * 60 * 1000; } registerTeam(team) { const validatedTeam = { ...team, registeredAt: new Date(), status: "registered" }; this.teams.push(validatedTeam); } startCompetition() { return this.teams.map(team => this.initializeSession(team)); } submitSolution(teamID, problemID, solution) { const team = this.teams.find(t => t.id === teamID); if (!team) return { error: "Team not found" }; const result = this.evaluateSolution(solution, problemID); team.submissions.push({ problemID, solution, result, timestamp: new Date() }); this.updateScore(team, result); return result; } } const judgeSystem = { testCases: new Map(), runTests(solution, problemID) { const tests = this.testCases.get(problemID); let passed = 0; for (const test of tests) { try { const output = solution(test.input); if (output === test.expected) passed++; } catch (error) { console.log("Runtime error:", error); } } return { passed, total: tests.length, score: (passed / tests.length) * 100 }; } };
Spring 2025

Poolesville High School
Computing Olympiad

Event Countdown

June 8, 2025 • 1:00 PM EST

0
Days
0
Hours
0
Minutes
0
Seconds
Spring 2025 Theme - The Great Heist

After a budgeting mishap, the PHS Computer Team is in crippling debt and (more importantly) desperately in need of funds for its traditional end-of-year party! Can you use your programming skills to help crack the fabled vaults of the corrupt Cardinal Casino and save the club?

Competition Highlights

Reimagined Competitive Format

With a unique progression-based format designed to encourage strategic thinking and teamwork, each solved problem unravels more of the story and gets you one step closer to the prize.

Go Solo, or Bring a Friend

Participate individually or partner up with a friend to try to solve as many problems as possible in the 4-hour competition window.

All Skill Levels, Anywhere

Whether you're new to competitive programming or an experienced programmer, there are problems designed for every skill level. Compete virtually from the comfort of your own home - no travel required!