\documentclass[12pt]{article}

\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}
\usepackage{amsthm, amsmath, amssymb}
\usepackage{hologo}

\usepackage{listings}
\usepackage{color}
\usepackage{xcolor}

\input code-format.tex

\newcounter{mysectioncounter}
\newcommand{\mysection}[1]{
  \vspace{0.5em}
  \refstepcounter{mysectioncounter}
  {\large\bf \arabic{mysectioncounter}. #1} 
  \vspace{0.5em}
}

\begin{document}

\begin{center}
{\large \bf Примеры использования битового сжатия}
\end{center}

\mysection{Флойд за $O(n^3/\log n)$}

Задача: поиск транзитивного замыкания орграфа. Для каждых $i$, $j$ хотим получить $d_{ij}$ "--- достижима ли из вершины $i$ вершина $j$.
Пусть для удобства изначально матрица $d$ равна матрице смежности. Рассмотрим стандартный алгоритм Флойда-Уоршела.

\lstinputlisting{a.cpp}

Попробуем его улучшить...

\mysection{Умножение матриц}

Можно писать так \lstinline!#include<cstdio>!, и это работает.

\begin{lstlisting}
#include<cstdio>
int main() {
  return 0;
}
\end{lstlisting}

\begin{lstlisting}[caption=Some Title, backgroundcolor=\color{yellow!50!white}]
#include<cstdio>
int main() {
  return 0;
}
\end{lstlisting}

\end{document}
