eolymp
bolt
Try our new interface for solving problems
Problems

Квадрат чи прямокутник

Квадрат чи прямокутник

Еолімп пропонує вам зіграти з тестувальною системою в цікаву інтерактивну гру <<Квадрат чи прямокутник>>. В Еолімпа є квадратна дошка розміром $100 \times 100$ клітинок. Рядки дошки пронумеровані цілими числами від $1$ до $100$ зверху донизу, а стовпчики --- цілими числами від $1$ до $100$ зліва направо. Відповідно, клітинка, яка знаходиться у лівому верхньому куті дошки, має координати $(1,\,1)$; клітинка, яка знаходиться у правому нижньому куті, має координати $(100,\,100)$; а клітинка, яка знаходиться на перетині $i$-го рядка та $j$-го стовпчика, має координати $(i,\,j)$. Еолімп зафарбовує прямокутну ділянку дошки, верхній лівий кут якої має координати $(x_1,\,y_1)$, а правий нижній --- $(x_2,\,y_2)$. Ці координати Еолімп тримає в таємниці. Але відомо, що площа зафарбованої ділянки займає не менш ніж 4\% від площі всієї дошки. Про будь-яку клітинку ви можете спитати в Еолімпа (чи належить вона зафарбованій ділянці) та отримати чесну відповідь від тестувальної системи. Вам треба з'ясувати, чи є зафарбована ділянка квадратом. \begin{center} \includegraphics[width=16cm, height=8cm]{https://static.eolymp.com/content/rb/rbt6qdt6sh7qj9j8e1ndq7sdas.png} Прямокутник та квадрат \end{center} \Interaction Щоб дізнатися, чи належить клітинка зафарбованій ділянці, треба це спитати у Еолімпа. Для цього потрібно одному рядку вивести символ <<\t{?}>> та два цілі числа $x$ та $y$ $(1 \le x \le 100, \; 1 \le y \le 100)$ --- координати точки, яку ви хочете запитати. Після цього вам потрібно вивести символ нового рядка та виконати операцію \t{flush}. Після цього потрібно зчитати рядок. Еолімп виведе або <<\t{inside}>>, якщо клітинка зафарбована, або <<\t{outside}>> інакше. \begin{itemize} \item \t{fflush(stdout)} або \t{cout.flush()} в C++; \item \t{System.out.flush()} в Java; \item \t{flush(output)} в Pascal; \item \t{stdout.flush()} в Python; \item для всіх інших мов вам потрібно дивитися документацію самостійно. \end{itemize} Ви можете поставити не більше $10\,000$ питань. Коли ви будете знати відповідь, вам потрібно вивести символ <<\t{!}>>, пробіл, та один з двох варіантів: або <<\t{square}>> (якщо зафарбована Еолімпом фігура --- квадрат), або <<\t{rectangle}>> (якщо фігура --- прямокутник). Якщо ви не будете дотримувалися формату взаємодії, то ви можете отримати будь-який вердикт: \t{Неправильна відповідь}, \t{Помилка виконання}, \t{Перевищено обмеження часу}, тощо. \Note У прикладі Еолімп зафарбував ділянку, у якої верхній лівий кут --- (20, 20), а правий нижній --- (80, 80). В умові наведений приклад того, як можна взаємодіяти з Еолімпом. Ваші запити до Еолімпа можуть бути іншими. \Scoring Ваша програма зіграє з Еолімпом у цю гру велику кількість разів. Нехай $q$ --- максимальна кількість питань, які ви поставили у всіх іграх. Тоді ви отримаєте таку кількість балів: \begin{enumerate} \item Якщо у будь-якій грі ви поставили більше $10\,000$ питань, вивели неправильну відповідь або не дотримувалися формату взаємодії, ви отримаєте $0$ балів. \item Якщо $1\,000 < q \leq 10\,000$, ви отримаєте $5$ балів. \item Якщо $100 < q \leq 1\,000$, ви отримаєте $19$ балів. \item Якщо $50 < q \leq 100$, ви отримаєте $20 + \lfloor\frac{(100 - q) \cdot 30}{50}\rfloor$ балів. \item Якщо $33 < q \leq 50$, ви отримаєте $50 + \lfloor\frac{(50 - q) \cdot 50}{17}\rfloor$ балів. \item Якщо $q \leq 33$, ви отримаєте $100$ балів. \end{enumerate} \Examples \exmp{inside inside outside inside outside outside inside outside outside}{? 50 50 ? 75 75 ? 10 10 ? 20 20 ? 19 20 ? 20 19 ? 80 80 ? 81 80 ? 80 81 ! square }
Time limit 0.25 seconds
Memory limit 256 MiB
Input example #1
10 10 80 80
Output example #1
32
Author Nikolay Arzubov
Source UOI 2023. III stage