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 }; } };
Fall 2025

Poolesville High School
Computing Olympiad

Event Countdown

October 25, 2025 • 1:00 PM EST

0
Days
0
Hours
0
Minutes
0
Seconds
Fall 2025 Theme - PHS's Haunted Halloween

Halloween is right around the corner, and Polly Programmer and her friends are busy both setting up Poolesville's annual spooky festivities and planning their own fun-filled activities! Can you use your programming skills to help Polly and her friends pull in the biggest candy haul of the year?

Prize Distribution

Standard Division Podium: $40, $30, $20
Advanced Division Podium (Pre-College): $60, $40, $30
Advanced Division Podium (Global): $25, $15, $10

Competition Highlights

Problem-Solving in Action

With never-before seen problems designed to encourage strategic thinking and teamwork, put your problem-solving skills to the test as you solve each problem and climb up the leaderboard and race against the clock.

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!