University of Victoria · Est. 2021

Find the
shortest path.

Competitive programming & technical interview prep at UVic.

01 About

A room for people who like hard problems.

UVic CPC is for students training for programming contests, building sharper algorithmic instincts, or preparing for technical interviews. We learn the patterns, then put them under pressure.

A01

Practice deliberately

Move from concepts to timed sets, with feedback that makes the next solve faster.

A02

Think in teams

Share whiteboards, compare approaches, and learn how a contest team actually works.

A03

Start where you are

Basic programming is enough. Curiosity and consistency do the rest.

02 Meetings

Open to every UVic student with basic programming experience.

Twice a week.
One shared scoreboard.

Bring a laptop. Show up for the first problem. Stay for the postmortem.

TUE01

Team training

Timed problem sets, team strategy, and contest simulation.

6:00–7:30
PM
FRI02

Coached session

Practice-question walkthroughs, techniques, and discussion.

6:00–7:30
PM

Location: ECS 249. Join discord for events and contest information.

03 Competition track

Train with a target.

We are building teams for the ICPC Pacific Northwest Regional, while keeping the door open for anyone who wants a better competitive edge.

  1. NOW
    ICPC Regional

    Algorithmic depth, team practice, and contest readiness.

  2. NEXT
    LeetCode nights

    Interview patterns, speed, and clear communication.

  3. SOON
    Small competitions

    Low-stakes rounds to test new skills together.

04 Resource archive

Notes, slides & session recordings.

Every session is a reusable edge in the graph.

SESSION 11

Spring practice 04

Pacific Northwest Regional problem set — work through a focused ICPC set as a team.

icpcpracticegraphs
SESSION 10

Fall practice 09

A five-problem Kattis set featuring geometry, strings, and constructive problem solving.

kattispracticegeometry
SESSION 9

Network flow

Notes and notebook for modelling flows, cuts, and matching problems.

algorithmsgraphnotes
SESSION 8

Heap practice

Priority queues, scheduling patterns, and a curated practice set.

data-structurespracticeheap
SESSION 7

Data structures foundations

Quick review of foundamental data structures and algorithms

data-structuresalgorithms
SESSION 6

Easy ad-hoc questions

Professor Ibrahim walk us through some easy ad-hoc questions from previous ICPC questions

ad-hocpracticeICPC
SESSION 5

2026 Fall Practice 1

Some practice questions from 2024 question set

ICPCpractice
SESSION 4

Trees and tries

Ibrahim lecture on trees and tries and previous questions sets

graphstreesICPC
SESSION 3

Dynamic programming and Segment trees

Ibrahim lecture on dynamic programming and segment trees questions

graphsDPsegment
SESSION 2

Dynamic programming and Union find

Ibrahim lecture on dynamic programming and Union finds questions

graphsDPunion_find
ARCHIVE 1

Fall Practice 4 2026

Problems: Alphabet Anti11 Cononical Exact Change 3 Debugging Sleeping On The Train

session notesarchive
ARCHIVE 2

Fall Practice 3 2026

Problems: 3 Sided Dice 99 Problems 2 Fleaon a Chess Board Avion A Musical Questoin

session notesarchive
ARCHIVE 3

Fall Practice 2 2026

Problems: Taking Out The Trash Balanced Tree Path Tree Hopping

session notesarchive
ARCHIVE 6

Fall Practice 8 2023

Problems (courtesy of Lawrence): Rise and Fall Circle Bounce Black and White Square Bounce Tetris Ge...

session notesarchive
ARCHIVE 7

Fall Practice 7 2023

Problems (shortest paths, courtesy of Lawrence): Shortest path of the king Rook, Bishop and King The Cla...

session notesarchive
ARCHIVE 8

Fall Lecture 1 2023

Lecture by Dr. Ibrahim Numanagić about what to do when stuck on a problem in competitive programming.

session notesarchive
ARCHIVE 9

Fall Practice 6 2023

Problems (B, C, D): AtCoder - Beginner Contest 319

session notesarchive
ARCHIVE 10

Fall Practice 5 2023

Problems (courtesy of Lawrence): Reversibly Cyclic Strings Tournament Seeding Who Goes There? Rise and...

session notesarchive
ARCHIVE 11

Fall Practice 4 2023

Problems (B, C, D): AtCoder - Beginner Contest 322

session notesarchive
ARCHIVE 12

Fall Practice 3 2023

Problems: LeetCode - Weekly Contest 364

session notesarchive
ARCHIVE 13

Fall Practice 2 2023

Problems: ABC309 - Rotate ABC309 - Medicine ABC309 - Add One Edge

session notesarchive
ARCHIVE 14

Meeting Schedule for Fall 2023

First meeting: Wednesday Sept 13, 5:30, in ECS 342. Meeting every Thursday, 5:30PM, in ECS 342 starting from Se...

session notesarchive
ARCHIVE 15

First meeting for Fall 2023

Introduction slides Problems: ABC314 - 3.14 ABC314 - Roulette ABC314 - Rotate Colored Subsequence ABC...

session notesarchive
ARCHIVE 16

Summer 2023 Practice 5

ABC304 - Subscribers ABC304 - Virus ABC304 - A Piece of Cake ABC304 - Good Graph

session notesarchive
ARCHIVE 17

Meeting Schedule for Summer 2023

Meeting every Thursday, 3:00PM, in ECS 352.

session notesarchive
ARCHIVE 18

Summer 2023 Practice 4

ABC303 - Discord ABC303 - Dash ABC303 - Shift vs. CapsLock ABC303 - A Gift From the Stars

session notesarchive
ARCHIVE 19

Summer 2023 Practice 3

ABC302 - Find snuke ABC302 - Almost Equal ABC302 - Impartial Gift ABC302 - Isolation

session notesarchive
ARCHIVE 20

Summer 2023 Practice 2

ABC301 - Fill the Gaps ABC301 - AtCoder Cards ABC301 - Bitmask ABC301 - Pac-Takahashi

session notesarchive
ARCHIVE 21

Summer 2023 Practice 1

ABC300 - Same Map in the RPG World ABC300 - Cross ABC300 - AABCC ABC300 - Dice Product 3

session notesarchive
ARCHIVE 22

Post-ICPC Practice 8 Spring 2023

ABC299 - Dango ABC299 - Find by Query ABC299 - Nearest Black Vertex

session notesarchive
ARCHIVE 23

Post-ICPC Practice 7 Spring 2023

ABC298 - Cards Query Problem ABC298 - Writing a Numeral ABC298 - Unfair Sugoroku

session notesarchive
ARCHIVE 24

Post-ICPC Practice 6 Spring 2023

ABC297 - chess960 ABC297 - PC on the Table ABC297 - Count Subtractions

session notesarchive
ARCHIVE 25

Post-ICPC Practice 5 Spring 2023

ABC294 - ASCII Art ABC294 - Merge Sequences ABC294 - Bank

session notesarchive
ARCHIVE 26

Post-ICPC Practice 4 Spring 2023

LeetCode Weekly Contest 336

session notesarchive
ARCHIVE 27

Post-ICPC Practice 3 Spring 2023

LeetCode Weekly Contest 335

session notesarchive
ARCHIVE 28

Post-ICPC Practice 2 Spring 2023

LeetCode Weekly Contest 329

session notesarchive
ARCHIVE 29

Post-ICPC Practice 1 Spring 2023

ABC291 - Trimmed Mean ABC291 - LRUD Instructions 2 ABC291 - Flip Cards

session notesarchive
ARCHIVE 30

ICPC Practice Contest 3 - Spring 2023

session notesarchive
ARCHIVE 31

ICPC Practice Contest 2 - Spring 2023

session notesarchive
ARCHIVE 32

ICPC Practice Contest 1 - Spring 2023

session notesarchive
ARCHIVE 33

Warm Up Practice Contest 1 - Spring 2023

session notesarchive
ARCHIVE 34

Practice Spring 2023

ABC211 - Number of Shortest paths ABC211 - chokudai

session notesarchive
ARCHIVE 35

Meeting Schedule for Spring 2023

Meeting every Friday, 11:30AM, in ECS 354.

session notesarchive
ARCHIVE 36

Meeting for Spring 2023

Meeting on Friday, January 27th, 5PM in ECS 123. Bring your latop as we will solve some problems. If you’re int...

session notesarchive
ARCHIVE 37

Warm Up Spring 2023

ABC176 - Multiple of 9 ABC233 - Count Interval

session notesarchive
ARCHIVE 38

First meeting for Spring 2023

The first meeting of the Spring 2023 term is Friday, January 20th, 5–6 PM in ECS 123. If you’re interested in th...

session notesarchive
ARCHIVE 39

Summer Practice 11 - 2 Pointers

Intersection of Two Linked Lists

session notesarchive
ARCHIVE 40

Summer Practice 10 - Binary Search

Search in Rotated Sorted Array

session notesarchive
ARCHIVE 42

Summer Practice 8 - Trie

Word Break II

session notesarchive
ARCHIVE 43

Summer Practice 7 - Dijkstra

Path with Maximum Probability

session notesarchive
ARCHIVE 44

Summer Practice 6 - Tree

Find First and Last Position of Element in Sorted Array Diameter of Binary Tree

session notesarchive
ARCHIVE 46

Summer Practice 4

Longest Substring Without Repeating Characters

session notesarchive
ARCHIVE 47

Summer Practice 3

Multigram Modulo Solitaire

session notesarchive
ARCHIVE 48

Summer Practice 2

Army Strength (Hard) Kattis’s Quest

session notesarchive
ARCHIVE 49

Summer Practice 1

Name Generation Touchscreen Keyboard

session notesarchive
ARCHIVE 50

First Meeting Summer 2022

Where’s My Internet?? Brexit Elevator Trouble

session notesarchive
ARCHIVE 51

End of Term Contest

session notesarchive
ARCHIVE 52

Topological Sort

Kattis - Build Dependencies Kattis - Conservation

session notesarchive
ARCHIVE 53

Leetcode Practice

15. 3Sum 371. Sum of Two Integers 417. Pacific Atlantic Water Flow

session notesarchive
ARCHIVE 54

Leetcode Practice

1. Two Sum 215. Kth Largest Element in an Array 904. Fruit Into Baskets

session notesarchive
ARCHIVE 55

ICPC training 6

session notesarchive
ARCHIVE 56

Practice - Ad Hoc

Kattis - Postal Delivery Kattis - Falling Apples

session notesarchive
ARCHIVE 57

ICPC training 5

session notesarchive
ARCHIVE 58

Leetcode Practice - Heap

347 - Top K Frequent Elements 295 - Find Median from Data Stream

session notesarchive
ARCHIVE 59

ICPC training 4

session notesarchive
ARCHIVE 60

Practice

Kattis - No Thanks Kattis - A1 Paper Kattis - Bank Queue

session notesarchive
ARCHIVE 61

ICPC training 3

session notesarchive
ARCHIVE 62

DFS Practice

505B - Mr. Kitayuta’s Colorful Graph 510B - Fox And Two Dots 580C - Kefa and Park

session notesarchive
ARCHIVE 63

ICPC training 2

session notesarchive
ARCHIVE 64

Spring 2022 Warm Up

Kattis - Babelfish Kattis - Ants Kattis - Doctor Kattis

session notesarchive
ARCHIVE 65

Network Flow

Slides Code

session notesarchive
ARCHIVE 66

ICPC training 1

session notesarchive
ARCHIVE 67

Easy Practice 12

session notesarchive
ARCHIVE 68

Easy Practice 11

session notesarchive
ARCHIVE 69

Winter Holidays Contest

session notesarchive
ARCHIVE 70

Team Practice Contest

session notesarchive
ARCHIVE 71

Bridges

Kattis - Birthday Party Kattis - Cave Exploration

session notesarchive
ARCHIVE 72

Practice Contest - 2021-12-01

session notesarchive
ARCHIVE 73

Segment Tree Practice

CSES - Static Range Minimum Queries CSES - Dynamic Range Sum Queries CSES - Range Update Queries

session notesarchive
ARCHIVE 74

Segment Trees

session notesarchive
ARCHIVE 75

Minimum Spanning Tree

Kattis - Island Hopping Kattis - Lost Map

session notesarchive
ARCHIVE 76

Practice Contest - 2021-11-10

session notesarchive
ARCHIVE 77

Convex Hull

Kattis - Board Wrapping

session notesarchive
ARCHIVE 78

Practice Contest - 2021-10-27

session notesarchive
ARCHIVE 79

Math Practice 20-10-2021

session notesarchive
ARCHIVE 80

Union Find

Kattis - Union-Find

session notesarchive
ARCHIVE 81

Backtracking

Kattis - Dobra Codeforces - Dreamoon and WiFi

session notesarchive
ARCHIVE 82

Practice

Atcoder - Many Balls Codeforces - Pipeline

session notesarchive
ARCHIVE 83

Codeforces practice

Word Buy a Shovel Decoding Petya and Countryside

session notesarchive
ARCHIVE 84

Practice 2021-09-10

Count Special Quadruplets Postal Delivery

session notesarchive
ARCHIVE 85

Leetcode 12 - Greedy

Partition Array Into Three Parts With Equal Sum Remove Duplicate Letters Task Scheduler

session notesarchive
ARCHIVE 86

Leetcode 11 - Strings

Restore IP Addresses Interleaving String Different Ways to Add Parentheses

session notesarchive
ARCHIVE 87

Practice Contest - 2021-08-20

session notesarchive
ARCHIVE 88

Leetcode 10 - Trees

Time Needed to Inform All Employees Find Duplicate Subtrees Delete Nodes And Return Forest Flip Equival...

session notesarchive
ARCHIVE 89

Practice Contest - 06-08-2021

session notesarchive
ARCHIVE 90

Leetcode 9

3Sum Closest Sort an Array 01 Matrix

session notesarchive
ARCHIVE 91

Leetcode 8

Majority Element Find All Numbers Disappeared in an Array Sort Colors Maximal Square

session notesarchive
ARCHIVE 92

Leetcode 7

Product of Array Except Self Search a 2D Matrix II Partition Labels Copy List with Random Pointer

session notesarchive
ARCHIVE 93

Leetcode 6

Palindrome Partitioning Isomorphic Strings Max Area of Island

session notesarchive
ARCHIVE 94

UVic CP - Practice 16-07-21

session notesarchive
ARCHIVE 95

Leetcode Speed Solving 5

Add Two Numbers String to Integer (atoi) Regular Expression Matching

session notesarchive
ARCHIVE 96

Leetcode Speed Solving 4 - Sliding Window

Find All Anagrams in a String Number of Sub-arrays of Size K and Average Greater than or Equal to Threshold...

session notesarchive
ARCHIVE 97

Leetcode Speed Solving 3

3Sum Validate Binary Search Tree Jump Game II LRU Cache

session notesarchive
ARCHIVE 98

Leetcode Speed Solving 2

Kth Largest Element in an Array Unique Binary Search Trees Minimum Path Sum Binary Tree Right Side View...

session notesarchive
ARCHIVE 99

DP Practice

session notesarchive
ARCHIVE 100

DP Lecture by Ibrahim

session notesarchive
ARCHIVE 101

Speed-solving LeetCode DP Problems

Counting Bits Divisor Game

session notesarchive
ARCHIVE 102

UVic CP - Easy Practice 10

session notesarchive
ARCHIVE 103

UVic CP - Easy Practice 9

session notesarchive
ARCHIVE 104

UVic CP - Easy Practice 8

session notesarchive
ARCHIVE 105

UVic CP - Easy Practice 7

session notesarchive
ARCHIVE 106

UVic CP - Easy Practice 6

session notesarchive
ARCHIVE 107

UPC warmup - Summer 2021

session notesarchive
ARCHIVE 108

UVic CP - Easy Practice 5

session notesarchive
ARCHIVE 109

UVic CP - Easy Practice 4

session notesarchive
ARCHIVE 110

UVic CP - Easy Practice 3

session notesarchive
ARCHIVE 111

UVic CP - Easy Practice 2

session notesarchive
ARCHIVE 112

UPC Practice - from codeforces contest

session notesarchive
ARCHIVE 113

Easy Practice 1

session notesarchive
ARCHIVE 114

Fun Practice

session notesarchive
ARCHIVE 115

ICPC Practice 3

session notesarchive
ARCHIVE 116

Union Find

Union-Find Standard Union Find with Path Compression. Make n sets. If the operation is “=” then union set a a...

session notesarchive
ARCHIVE 117

ICPC Practice 2

session notesarchive
ARCHIVE 118

Shortest Path in a Binary Weight Graph

Bridges Simple BFS does not work because there can be a longer path that has a smaller total weight. Method ...

session notesarchive
ARCHIVE 119

ICPC Practice 1

session notesarchive
ARCHIVE 120

Prime Numbers

Check if a number is prime def is_prime(n): if n < 5: return n == 2 or n == 3 if not (n % 6 =...

session notesarchive
ARCHIVE 121

C++, GDB Lecture and Valid Subsets Problem

Introduction to C++ and GDB Chickens and Zombies problem Include the standard template library (STL) #in...

session notesarchive
ARCHIVE 122

BFS/DFS and Strongly Connected Components (SCC)

Islands Breadth First Search. You can also solve it with Depth First Search or any graph traversal algorithms...

session notesarchive
ARCHIVE 123

First meeting

Hello World! The Easiest Problem Is This One Summing digits of integer n: Method 1: math sum = 0 whil...

session notesarchive
ARCHIVE 124

Competitive Programming book

session notesarchive

New members welcome

Your next solve
starts here.

Join the Discord for meeting rooms, contest updates, and the problems we are working on this week.

Join on Discord