Даны 5 целых чисел, каждое от 1 до 13. Выведите одну из следующих строк:
Подарок в честь начала учебного года — в этой задаче тесты открытые. Больше такого не будет!
Ввод | Вывод |
---|---|
1 3 9 3 2 |
One Pair |
1 5 5 4 4 |
Two Pairs |
1 5 2 4 3 |
Straight |
10 11 12 13 1 |
Nothing |
Рассмотрим следующую разновидность покера. В игре участвуют карты \(N\) различных значений от 1 до \(N\), карт каждого из возможных значений бесконечно много. Каждый игрок получает \(N\) карт и смотрит, какое максимальное число карт одного значения у него есть на руках. Пусть у первого игрока на руках есть \(s\) одинаковых карт, а у второго игрока \(t\) одинаковых карт. Тогда если \(s\gt t\), то выиграл первый игрок, если \(s\lt t\), то выиграл второй игрок, иначе оба игрока отбрасывают равное наибольшее число одинаковых карт и процесс повторяется заново до тех пор, пока не будет определён победитель или пока у игроков не кончатся карты, что означает ничью.
По значениям карт двух игроков определите, кто выигрывает.
Первая строка входных данных содержит число \(N\), \(1\le N\le 10^5\). Вторая и третья строка содержат по \(N\) натуральных чисел от 1 до \(N\) каждое — значения карт первого и второго игрока.
Программа должна вывести номер выигрывающего игрока (1 или 2), или число 0 в случае ничьи.
Ввод | Вывод |
---|---|
3 |
2 |
5 |
1 |
4 |
0 |
Такая задача предлагалась на ЕГЭ по информатике в 2009 году. Решение должно использовать \(O(1)\) памяти, в частности, это означает, что нельзя создавать массивы, размер которых был бы пропорционален числу строк во входном файле. Сложность решения должна быть \(O(N)\). Максимальное значение суммы баллов за все экзамены считается константой, то есть не влияющей на ассимптотику сложности решения.
Для поступления в вуз абитуриент должен предъявить результаты трех экзаменов в виде ЕГЭ, каждый из них оценивается целым числом от 0 до 100 баллов. При этом абитуриенты, набравшие менее 40 баллов (неудовлетворительную оценку) по любому экзамену из конкурса выбывают. Остальные абитуриенты участвуют в конкурсе по сумме баллов за три экзамена.
В конкурсе участвует \(N\) человек, при этом количество мест равно \(K\). Определите проходной балл, то есть такое количество баллов, что количество участников, набравших столько или больше баллов не превосходит \(K\), а при добавлении к ним абитуриентов, набравших наибольшее количество баллов среди непринятых абитуриентов, общее число принятых абитуриентов станет больше \(K\).
Программа получает на вход количество мест \(K\). Далее идут строки с информацией об абитуриентах, каждая из которых состоит из фамилии и имени (текстовые строки через пробел) и трех чисел от 0 до 100, разделенных пробелами.
Программа должна вывести проходной балл в конкурсе. Выведенное значение должно быть минимальным баллом, который набрал абитуриент, прошедший по конкурсу.
Также возможны две ситуации, когда проходной балл не определен.
Если будут зачислены все абитуриенты, не имеющие неудовлетворительных оценок, программа должна вывести число 0.
Если количество абитуриентов, имеющих равный максимальный балл больше чем \(K\), программа должна вывести число 1.
Ввод | Вывод |
---|---|
5 Иванов Сергей 70 70 70 Сергеев Петр 100 100 0 Петров Василий 70 60 70 Васильев Андрей 70 60 70 Андреев Денис 100 30 100 Денисов Роман 50 50 50 Романов Григорий 60 70 70 Григорьев Станислав 50 50 50 Станиславский Иван 40 40 40 |
200 |
1 Иванов Сергей 40 40 40 Сергеев Петр 100 100 39 |
0 |
1 Иванов Сергей 60 60 60 Сергеев Петр 100 40 40 |
1 |
Решение должно иметь сложность \(O(N)\) и использовать \(O(1)\) памяти.
В условиях предыдущей задачи определите полупроходной балл, то есть такое значение балла, что количество абитуриентов, набравших балл выше полупроходного, меньше \(K\), а количество абитурентов, набравших балл выше или равный полупроходному, больше \(K\).
Программа должна вывести значение полупроходного балла, если полупроходного балла не существует, программа должна вывести одно число 0.
Ввод | Вывод |
---|---|
5 Иванов Сергей 70 70 70 Сергеев Петр 100 100 0 Петров Василий 70 60 70 Васильев Андрей 70 60 70 Андреев Денис 100 30 100 Денисов Роман 50 50 50 Романов Григорий 60 70 70 Григорьев Станислав 50 50 50 Станиславский Иван 40 40 40 |
150 |
1 Иванов Сергей 50 50 50 Сергеев Петр 100 100 100 Петров Иван 100 0 100 |
0 |
Решение должно иметь сложность \(O(N)\) и использовать \(O(1)\) памяти.
В олимпиаде участвовало \(N\) человек, каждый из которых мог набрать от 0 до 100 баллов. По положению об олимпиаде жюри может наградить не более 45% от числа участников, округляя их число до целого при необходимости вниз.
При этом если последний участник, попавший в 45% набирает столько же баллов, сколько первый участник, не попавший в 45%, то решение по этим участникам, и всем участникам, набравшим такой балл принимается следующим образом:
Все данные участники объявляются призерами, если набранный ими балл больше половины от максимально возможного балла.
Все эти участники не объявляются призерами, если набранный ими балл не больше половины от максимально возможного.
Программа получает на вход информацию об участниках олимпиады (один участник в одной строке). Строка содержит фамилию и имя участника и набранный данным участником балл через пробел.
Программа должна вывести минимальный балл, который получил участник олимпиады, ставший ее призером.
Ввод | Вывод |
---|---|
Иванов Сергей 70 Сергеев Петр 30 Петров Василий 40 Васильев Андрей 80 Андреев Денис 50 Денисов Роман 90 Романов Иван 70 Иванов Григорий 60 Григорьев Сергей 100 |
70 |
Иванов Сергей 50 Сергеев Петр 70 Петров Василий 40 Васильев Андрей 10 Андреев Денис 50 Денисов Роман 20 Романов Иван 30 Иванов Григорий 70 Григорьев Сергей 100 |
70 |
Иванов Сергей 30 Сергеев Петр 60 Петров Василий 20 Васильев Андрей 100 Андреев Денис 30 Денисов Роман 80 Романов Иван 20 Иванов Григорий 40 Григорьев Сергей 10 |
40 |