Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/63: Рейтинг темы: голосов - 63, средняя оценка - 4.57
2 / 2 / 0
Регистрация: 29.10.2020
Сообщений: 30

Рыцари

05.10.2021, 23:53. Показов 11909. Ответов 1

Студворк — интернет-сервис помощи студентам
В королевстве Логрес за круглым столом собираются рыцари. Каждый рыцарь гордится своими победами, поэтому делает на своих доспехах царапины по количеству побежденных противников. Ранг рыцаря определяется по количеству царапин. Рыцари весьма горды и тот, чей ранг ниже, должен оказывать почтение тому, чей ранг выше. Если вдруг возникает ситуация, что подряд сидят рыцари с одинаковым рангом, то они устраивают между собой турнир, по итогам которого определяется один победитель. Он ставит на доспехи новые царапины (если в турнире участвовало kk рыцарей, то победитель поставит k-1k−1 новую царапину) и возвращается за стол на свое место. Остальные участники турнира уходят залечивать раны и уязвленное самолюбие. Если после этого вновь возникает аналогичная ситуация, то проводится новый турнир, и так далее.

За круглым столом собралось nn рыцарей, и они предусмотрительно расселись так, чтобы ранги соседей были различными. Но опоздавший Галахад все испортил. Он сел на случайно выбранное место, и карусель турниров снова закрутилась.

Известны ранги всех nn рыцарей, изначально сидевших за столом. Также известен ранг Галахада и место на которое он сел. Напишите программу для определения количества рыцарей, которые останутся за столом после того, как все турниры завершатся.

Формат входных данных
В первой строке на вход подается число nn — количество рыцарей без учета Галахада. 1 \leq n\leq 3000001≤n≤300000. Во второй строке через пробел записаны nn натуральных чисел r_1,\ldots, r_nr
1

,…,r
n

— ранги всех рыцарей. r_i\leq 10^6r
i

≤10
6
; r_i\neq r_{i+1}r
i



=r
i+1

; r_1\neq r_nr
1



=r
n

. В третьей строке через пробел записаны два натуральных числа pp и tt. 1\leq p\leq n1≤p≤n; t\leq 10^6t≤10
6
. Число pp задает место, на которое сел Галахад и означает, что он оказался между рыцарями с номерами pp и p+1p+1. Если p=np=n, то Галахад находится между первым и последним рыцарем. Число tt задает исходный ранг Галахада.

Формат выходных данных
Требуется вывести одно число — ответ к задаче.

Методика проверки и пояснение к тесту
После того, как Галахад сядет за стол после второго рыцаря, ранги рыцарей за столом будут (7 5 5 6 8 9 10 12 10 8). Два рыцаря с рангом 5 проведут турнир, останется один из них, ранг которого повысится до 6 (7 6 6 8 9 10 12 10 8). Из двух рыцарей с рангом 6 вновь останется 1 с рангом 7 (7 7 8 9 10 12 10 8). После очередного турнира получим (8 8 9 10 12 10 8). Помня, что стол круглый, видим 3 рыцарей с рангом 8, сидящих подряд. Из них останется один с рангом 10 (10 9 10 12 10). Будет проведен еще один турнир, после которого оставшиеся 4 рыцаря не будут иметь соседей с одинаковым рангом (11 9 10 12)

Программа проверяется на 20 тестах. Прохождение каждого теста оценивается в 1 балл. Тест из условия задачи при проверке не используется.

Sample Input 1:
9
7 5 6 8 9 10 12 10 8
2 5

Sample Output 1:
4
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.10.2021, 23:53
Ответы с готовыми решениями:

Рыцари
есть некоторая задача, к которой я написал код. Собственно свё бы хорошо, но мой код не проходит по времени, и я не знаю как его дальше...

Рыцари и лжецы
За столом по кругу сидят 143 человека, каждый из которых является рыцарем или лжецом. Каждый из них произнёс фразу: «Следующие k человек,...

Оруженосцы и рыцари
Можно ли переправить четыре пары рыцарей-оруженосцев с помощью двухместной лодки, если оруженосец не может находиться на одном берегу с...

1
-6 / 2 / 1
Регистрация: 06.10.2021
Сообщений: 24
06.10.2021, 18:56
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    int n, k, p, x;
    cin >> n;
    vector<int> v(n + 2);
    
    v[0] = -1;
    for (auto i = 1; i < n + 1; ++i)
    { 
        cin >> v[i];
    }
    v[n + 1] = -1;
    
    cin >> k >> p;
   
    int  nxt  = k + 1, prv= k ;
    
    while (p == v[nxt] || p == v[prv]) 
    {
        int k = p;
        while (p == v[nxt])
        {
            ++nxt;
            ++k;
        }
        while (p == v[prv])
        {
            --prv;
            ++k;
        }
        p = k;
    }
    cout << 2 + prv + n - nxt;
}
Добавлено через 1 минуту
Помоги решить плз)
[Структуры данных]
Очередь
Студенческая группа сдает зачет преподавателю. Он расположил студентов по некоторому неизвестному порядку и сообщил, кто после кого сдает зачет. Теперь студенты хотят выяснить в каком порядке им приходить, чтобы не стоять всей группой за дверью.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.10.2021, 18:56
Помогаю со студенческими работами здесь

ЗАДАЧА Рыцари и дамы
Рыцари и дамы На берег реки приезжают 3 рыцаря, каждый со своей дамой. В их распоряжении имеется лодка, способная вместить не более 2-х...

Рыцари и лжецы[РЕШЕНИЕ]
На острове Буяне жили N человек, каждый из которых был либо рыцарем либо лжецом, встали в круг. Рыцари говорят только правду, лжецы всегда...

Рыцари и лжецы. Исправить код
На острове живут рыцари и лжецы. Рыцари всегда говорят правду, лжецы всегда лгут. Прохожий встретил трех жителей острова A, B, и C и...

Рыцари и дамы. Поиск в глубину с ограничением глубины до 16
НУЖНО &quot;запрограммировать на Прологе решение логической задачи и создать экспертную систему&quot; На берег реки приезжают 3 рыцаря, каждый...

Алгоритм решения задачи "Рыцари 40 островов"
Не подскажете хороший и лёгкий алгоритм для решения такой задачи? Ссылка на задачу Из ссылки:


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru