Files
mock-uil-2025/exam/packet.tex
2025-11-22 21:34:31 -06:00

190 lines
4.8 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath, amssymb}
\usepackage{geometry}
\usepackage{fancyhdr}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{enumitem}
% Page layout
\geometry{margin=1in}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[L]{Programming Competition Test}
\fancyhead[R]{\today}
\fancyfoot[C]{\thepage}
% Listings style for code
\lstset{
language=Java,
basicstyle=\ttfamily\small,
keywordstyle=\color{blue},
commentstyle=\color{green!60!black},
stringstyle=\color{red},
numbers=left,
numberstyle=\tiny,
stepnumber=1,
numbersep=5pt,
showstringspaces=false,
breaklines=true,
frame=single,
rulecolor=\color{black!30},
backgroundcolor=\color{black!2}
}
% Custom commands
\newcommand{\problem}[1]{\section*{#1}}
\newcommand{\inputformat}{\textbf{Input format:}}
\newcommand{\outputformat}{\textbf{Output format:}}
\newcommand{\examples}{\textbf{Example(s):}}
\begin{document}
\begin{center}
{\LARGE \textbf{Programming Competition Test}}\\[2mm]
{\large Duration: 2 hours \quad Total Marks: 100}
\end{center}
\section*{Instructions}
\begin{enumerate}[label=\arabic*.]
\item This test contains algorithmic problems similar to those found on LeetCode or HackerRank.
\item Use efficient algorithms to avoid timeouts; naive solutions may not receive full marks.
\item Submit solutions in C++, Python, or Java.
\item For each problem, write a function or program according to the specified input/output format.
\item Clearly comment your code if necessary.
\end{enumerate}
% ========================= Problem 1 =========================
\problem{Problem 1: Two Sum}
\textit{Difficulty: Easy}
Given an array of integers \texttt{nums} and an integer \texttt{target}, return indices of the two numbers such that they add up to \texttt{target}. Assume exactly one solution exists.
\inputformat
\begin{itemize}
\item First line contains an integer $n$ ($2 \leq n \leq 10^5$), the size of the array.
\item Second line contains $n$ integers, the elements of the array.
\item Third line contains the integer \texttt{target}.
\end{itemize}
\outputformat
\begin{itemize}
\item Print two integers, the indices of the elements adding up to \texttt{target}.
\end{itemize}
\examples
\begin{verbatim}
Input:
4
2 7 11 15
9
Output:
0 1
\end{verbatim}
% ========================= Problem 2 =========================
\problem{Problem 2: Longest Substring Without Repeating Characters}
\textit{Difficulty: Medium}
Given a string \texttt{s}, find the length of the longest substring without repeating characters.
\inputformat
\begin{itemize}
\item A single line containing the string \texttt{s} ($1 \leq |s| \leq 10^5$).
\end{itemize}
\outputformat
\begin{itemize}
\item A single integer, the length of the longest substring without repeated characters.
\end{itemize}
\examples
\begin{verbatim}
Input:
abcabcbb
Output:
3
\end{verbatim}
% ========================= Problem 3 =========================
\problem{Problem 3: Merge Intervals}
\textit{Difficulty: Hard}
Given a collection of intervals, merge all overlapping intervals.
\inputformat
\begin{itemize}
\item First line contains an integer $n$ ($1 \leq n \leq 10^4$), the number of intervals.
\item Next $n$ lines contain two integers each, representing the start and end of each interval.
\end{itemize}
\outputformat
\begin{itemize}
\item Print the merged intervals in ascending order of start times.
\end{itemize}
\examples
\begin{verbatim}
Input:
4
1 3
2 6
8 10
15 18
Output:
1 6
8 10
15 18
\end{verbatim}
% ========================= Problem 4 =========================
\problem{Problem 3: Merge Intervals}
\textit{Difficulty: Hard}
You are given a string S composed of only the characters \6\, \7\, \'A\, \'B\, and \#\ (without the quotation marks). This string is processed from left to right, and you must maintain a sequence of chracters that changes according to these rules:
1. The sequence starts out empty.
2. 6 - add a 6 to the end of the sequences
3. 7 - if the sequence is non-empty and its last chracter is \6\, remove that last \6\, otherwise, add \7\ to the end of the sequence
4. A - reverse the sequence
5. B - add a duplicate of the current sequence to the end of it
6. # - clear the sequence
\inputformat
\begin{itemize}
\item The first line consists of the string S. The string consists only of the characters 6, 7, A, B, and #.
\item \texttt{s} ($1 \leq |s| \leq 10^5$)
\end{itemize}
\outputformat
\begin{itemize}
\item Output a single line containig the final form of the sequence. If the sequence is empty at the end, output “EMPTY” (without the quotations).
\end{itemize}
\examples
\begin{verbatim}
Input 1:
67A6
Output 1:
6
Input 2:
66B7
Output 2:
666
Input 3:
7A7#
Output 3:
EMPTY
\end{verbatim}
\end{document}