\documentclass[12pt]{article}
\input{structure.tex}
\fancyhead[R]{
	\begin{minipage}{\textwidth}
		\raggedleft
		\includegraphics[width=2cm]{./logo2.png}
	\end{minipage}
}
\renewcommand{\bottomtitlespace}{3cm}

\begin{document}

\renewcommand{\tl}{$0.1$ сек.}
\renewcommand{\ml}{$1024$ MB}
\problem{Задача OS02. ДВОИЧЕН НИЗ}
\addauthor{Автор: Иван Лупов (заета)}{2026}{08}{29}
\renewcommand{\header}{
	НАЦИОНАЛНА ШКОЛА ПО ИНФОРМАТИКА\\
	ОТБОРНО СЪСТЕЗАНИЕ\\
	Габрово, 29 август 2026 г.\\
	8 – 10 клас
}

За да бъде максимално защитена тортата за тазгодишното закриване на лагер-школата, журито реши да сложи защитен код на ключалката на сейфа, където се държи тортата, използвайки таен двоичен низ.

Известно е, че тайният двоичен низ се състои от $N$ символа, където $N$ е четно цяло число. Разбира се, Вие веднага започвате да пробвате някакви възможности за защитния код, но след $525$ безуспешни опита решавате да прочетете файла \texttt{README.txt} и разбирате, че алармата ще се включи автоматично след $2026$ опита, което означава, че Ви остават само $1500$ такива. За огромно щастие във файла пише също как можете да разберете дали сте на прав път с налучкването. По-конкретно, след всеки Ваш опит да декриптирате защитения код с някой двоичен низ, ще може да разберете дали броят на съвпадащите символи между вашето предположение и тайния низ е точно $N$, $\frac{N}{2}$ или не е нито едно от двете.

Напишете програма \textbf{\texttt{binstring}}, която ще открие защитения код като изпраща предположения за двоичния низ.

\subsection{Детайли по имплементацията}

Трябва да имплементирате функцията \texttt{play}:
\begin{lstlisting}
 void play(int N)
\end{lstlisting}

Тази функция ще бъде извикана само веднъж от програмата на журито и като аргумент ще получи цялото число $N$ -- дължината на низа. За комуникация с програмата на журито Ви се предоставят следните две функции:

\begin{lstlisting}
 int compare_string(const string &s);
 void submit_string(const string &s);
\end{lstlisting}

При всяко извикване на функцията \texttt{compare\_string}, тя ще връща едно число:
\begin{itemize}
	\item $0$ -- ако броят на съвпадащите символи не е нито $N$, нито $\frac{N}{2}$;
	\item $1$ -- ако броят на съвпадащите символи е точно $\frac{N}{2}$;
	\item $2$ -- ако този брой е $N$.
\end{itemize}

Низовете, които предавате като аргументи на функцията, трябва да отговарят на следните условия:
\begin{itemize}
	\item да се състоят от точно $N$ символа;
	\item да не съдържат символи различни от \texttt{0} или \texttt{1}.
\end{itemize}

Ако нарушите някое от описаните условия или превишите броя допустими заявки ($1500$), изпълнението на вашата функция ще бъде прекратено и няма да получите точки за съответния тест.

След като откриете тайния криптиращ низ, вашата функция ще трябва да извика функцията \texttt{submit\_string} и да го предаде като аргумент. След това трябва да приключите програмата нормално.

\subsection{Ограничения}
\vspace{0.1em}
\begin{itemize}
	\item $1 < N \le 1000$, $N$ е четно число.
	\item В $25\%$ от тестовете: $N \le 10$.
\end{itemize}
 
\subsection{Примерна комуникация}
\begin{table}[H]
	\begin{tblr}{|Q[c,m]|Q[c,m]|}
		\hline
		\textbf{Вашата програма} & \textbf{Програма на журито} \\
		\hline
		& \texttt{play(4)} \\
		\hline
		\texttt{compare\_string("0000")} & \texttt{return 1} \\
		\hline
		\texttt{compare\_string("0001")} & \texttt{return 0} \\
		\hline
		\texttt{compare\_string("0010")} & \texttt{return 0} \\
		\hline
		\texttt{compare\_string("0011")} & \texttt{return 1} \\
		\hline
		\texttt{compare\_string("0100")} & \texttt{return 0} \\
		\hline
		\texttt{compare\_string("0101")} & \texttt{return 2} \\
		\hline
		\texttt{submit\_string("0101")} & \\
		\hline
	\end{tblr}
\end{table}
\FloatBarrier

\subsection{Локален грейдър}
Формат на входа:
\begin{itemize}
	\item ред $1$: тайният двоичен низ
\end{itemize}
Програмата ще отпечатва комуникацията, която се извършва. 
	
\end{document}