eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Сортування "бульбашкою"

Сортування "бульбашкою"

\textit{Сортуваня простими обмінами, сортування бульбашкою (англ. bubble sort) --- простий алгоритм сортування. Для розуміння і реалізації цей алгоритм --- найпростіший, але эфективний він лише для невеликих масивів. Алгоритм вважається навчальним і практично не застосовується поза межами начальної літератури, замість нього на практиці застосовується сортування вставками. Алгоритм полягає у повторюваних проходах по масиву, що сортується. За кожен прохід елементи послідовно порівюються попарно і, якщо порядок у парі невірний, виконується обмін елементів. Проходи по масиву повторюються до тих пір, доки на черговому проході не виявиться, що обміни більше не потрібні, що означає --- масив вісортовано. При проході алгоритму, елемент, який стоїть не на свому місці, <<спливає>> до потрібної позиції як бульбашка у воді, звідси і назва алгоритму.} \textit{ВікіпедіЯ} Булбашове сортування є дуже простим алгоритмом і його часова складність складає \textbf{O}(\textbf{n^2}). Кожен раз, проходячи по всьому масиву, спочатку ми порівнюємо сусідні елементи і якщо є потреба міняємо їх місцями. Цей процес повторюється, поки при черговому проході зроблено хоча б одну заміну. Припустимо, що після \textbf{T} проходів масив вже відсортовано у порядку зростаня, тоді ми говоримо, що \textbf{T} є кількістю етапів сортування для заданого массиву. Нижче наведено приклад. Візьмемо за заданий початковий масив "\textbf{5 1} \textbf{4 2 8}" а потім використовуючи описаний алгоритм бульбашкового сортування проведемо його сортування наступним чином: Перший прохід: ( \textbf{5 1} 4 2 8 ) -> ( \textbf{1 5} 4 2 8 ), порівняли перших два елементи і поміняли їх місцями.( 1 \textbf{5 4} 2 8 ) -> ( 1 \textbf{4 5} 2 8 ), поміняли місцями \textbf{5} > \textbf{4}( 1 4 \textbf{5 2} 8 ) -> ( 1 4 \textbf{2 5} 8 ), поміняли місцями \textbf{5} > \textbf{2}( 1 4 2 \textbf{5 8} ) -> ( 1 4 2 \textbf{5 8} ), так як два останніх елементи впорядковані (\textbf{8} > \textbf{5}), алгоритм не міняє їх місцями. Другий прохід: ( \textbf{1 4} 2 5 8 ) -> ( \textbf{1 4} 2 5 8 ) ( 1 \textbf{4 2} 5 8 ) -> ( 1 \textbf{2 4} 5 8 ), поміняли місцями \textbf{4} > \textbf{2} ( 1 2 \textbf{4 5} 8 ) -> ( 1 2 \textbf{4 5} 8 ) ( 1 2 4 \textbf{5 8} ) -> ( 1 2 4 \textbf{5 8} ) Після \textbf{T} = \textbf{2} проходів масив вже відсортовано, тому ми кажемо, що кількість проходів алгориму сортування бульбашкою для заданого масиву дорівнює \textbf{2}. Петрик вивчив алгоритм сортування бульбашкою у класі і його вчитель задає завдання, пов'язані з ним, як домашнє завдання. Вчитель надав Петрику вже відсортований масив \textbf{A}, яки складається з \textbf{N} різних цілих чисел і стверджує, що він отримав його після \textbf{K} проходів алгоримом сортування бульбашкою. Завдання: яка кількість заданих початкових масивів \textbf{A} може існувати, щоб в результаті отримати заданный масив після \textit{\textbf{K }}проходів алгоритму сортування бульбашкою? Результат може бути дуже великим, тому його необхідно вивести по модулю \textbf{20100713}. \InputFile Вхідні дані складаються з декількох тестів. У першому рядку задано натуральне число \textbf{T} (\textbf{T} ≤ \textbf{100000}), яке вказує кількість тестових випадків. Наступні \textbf{T} рядкі містять тестові дані. У кожному рядку знаходиться два цілих числа \textbf{N} і \textbf{K} (\textbf{1} ≤ \textbf{N} ≤ \textbf{1000000}, \textbf{0} ≤ \textbf{K} ≤ \textbf{N} - \textbf{1}) де \textbf{N} вказує на розмір масиву, а \textbf{K} - кількість етапів сортування алгоритмом бульбашки. \OutputFile Для кожного тестового випадку вивести у окремому рядку відповідь на поставлену задачу по модулю \textbf{20100713}. \textbf{Примітка} Препустимо, що задано масив \{\textbf{a}, \textbf{b}, \textbf{c}\} (\textbf{a} < \textbf{b} < \textbf{c}). Існує \textbf{6} різних варіантів початкового масиву: \{\textbf{a}, \textbf{b}, \textbf{c}\}, \{\textbf{a}, \textbf{c}, \textbf{b}\}, \{\textbf{b}, \textbf{a}, \textbf{c}\}, \{\textbf{b}, \textbf{c}, \textbf{a}\}, \{\textbf{c}, \textbf{a}, \textbf{b}\}, \{\textbf{c}, \textbf{b}, \textbf{a}\}, а заданий ми можемо отримати по різному: \{\textbf{a}, \textbf{b}, \textbf{c}\}: не сортуючи, так як масив вже відсортовано. \{\textbf{a}, \textbf{c}, \textbf{b}\}, \{\textbf{b}, \textbf{a}, \textbf{c}\}, \{\textbf{c}, \textbf{a}, \textbf{b}\}: за один прохід алгоритму сортування бульбашкою. \{\textbf{b}, \textbf{c}, \textbf{a}\}, \{\textbf{c}, \textbf{b}, \textbf{a}\}: за \textbf{2} проходи алгоритму сортування бульбашкою.
Ліміт часу 1 секунда
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
3
3 0
3 1
3 2
Вихідні дані #1
1
3
2