Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
8 / 1 / 0
Регистрация: 20.02.2019
Сообщений: 35

Определить победителя соревнования используя записи с системы фиксации

23.03.2019, 12:49. Показов 5187. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, помогите, пожалуйста, решить задачу... Идей пока вообще нет, даже не знаю как подступиться...
Буду очень благодарен за любую помощь!


Кольцевые гонки
Участники кольцевых гонок на одноколесных велосипедах нумеруются числами от 1 до N. Им предстоит проехать K кругов и победителем является тот, кто проехал их раньше всех. Участники стартуют одновременно с некоторой линии, которая называется конец круга. Каждый раз, когда участник пересекает эту линию, его номер фиксируется автоматической системой с высокой точностью (то есть два участника не могут пересечь эту линию одновременно). После прохождения K кругов эта же линия является финишной прямой. К сожалению, некоторые участники сходят с дистанции и проезжают меньшее количество кругов.

Организаторы соревнования забыли число K и стесняются спросить его у участников. Помогите организаторам определить победителя соревнования, используя только записи с системы фиксации. Гарантируется, что хотя бы один из участников преодолел необходимые K кругов и никто из участников не проехал более K кругов. Первая фиксация номера участника происходит после прохождения первого круга.

Формат входных данных
В первой строке задаются целые числа N и M (1 ≤ N ≤ 100, 1 ≤ M ≤ 10000) — количество участников соревнования и записей с системы фиксации соответственно.

Во второй строке задается M целых чисел от 1 до N – номера участников в том порядке, как они фиксировались системой.

Формат результата
Выведите одно число — номер победителя.

Примеры
Входные данные
3 4
1 3 3 1
Результат работы
3
Входные данные
3 5
1 1 2 3 1
Результат работы
1
Примечания
В первом примере участники 1 и 3 проехали 2 круга, но после последнего круга впереди был участник номер 3, поэтому он и является победителем. Участник номер 2 сошёл с дистанции на первом круге.

Во втором примере участник 1 единственный проехал 3 круга и является победителем. Участники 2 и 3 сошли на втором круге.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.03.2019, 12:49
Ответы с готовыми решениями:

Определить фамилию победителя соревнования и разницу между лучшим и худшим результатом
Условие задачи: Известны результаты бега спортсменов на длинную дистанцию. Время представлено в минутах и секундах. Определить фамилию...

Используя функцию GetVersionEx определить тип операционной системы
Задание звучит так: используя функцию GetVersionEx определить тип операционной системы. На форуме уже был такой вопрос и оттуда я вытянул...

Определить место самого юного участника соревнования
Поля структуры: фамилия, имя, возраст, структура результат: мин. сек.; Подскажите, как определить место самого юного участника соревнования...

4
 Аватар для _Cheshire Cat_
6 / 4 / 2
Регистрация: 22.11.2018
Сообщений: 83
23.03.2019, 20:45
vakru, Дико извиняюсь я в школе не учился объясните русским языком сколько велосипедистов и куда они едут ???
С кокой скоростью какое сопротивления воздуха есть ли зрители которые кидают им палки в колёса ?
0
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
23.03.2019, 21:36
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
#include <iostream>
#include <unordered_map>
 
using namespace std;
 
int main() {
    int N, M;
 
    cin >> N >> M;
 
    unordered_map<int, int> mp;
 
    int num;
    for (int i = 0; i < M; ++i) {
        cin >> num;
        mp[num] += 1;
    }
 
    int max_rings = 0;
    int winner = 0;
    for (const auto &pr : mp) {
        if (pr.second > max_rings) {
            max_rings = pr.second;
            winner = pr.first;
        }
    }
    cout << winner << endl;
}
Осталось непонятным что курили организаторы соревнования, что забыли число K?
1
8 / 1 / 0
Регистрация: 20.02.2019
Сообщений: 35
23.03.2019, 22:18  [ТС]
Кстати, я придумал решение чуть более сложное:

#include <iostream>
using namespace std;

int main() {
// info[0 to M] - информация о проходах кругов участниками
// data[0][0 to N] - номера участников
// data[1][0 to N] - информация о количестве кругов, пройденных участниками
// data[2][0 to N] - номера последних проходов через черту
// data[3][0 to N] - значение 1, если количество кругов, пройдённых
// участником максимально; значение 0, если нет

// Объявление переменных и массивов
int n, m, max, min = 10000, count = 0, winner,
data[4][100] = {}, info[10000] = {};

// Ввод количества участников (N) и пройденных кругов (M)
cin » n » m;

// Ввод информации о проходах кругов участниками
for (int i = 0; i < m; ++i)
cin » info[i];

// Заполнение массива номерами участников
for (int i = 1; i <= n; ++i)
data[0][i-1] = i;

// Поиск номеров последних прохождений через черту конкретных участников
for (int i = 1; i <= n; ++i)
for (int j = 0; j < m; ++j)
if (info[j] == i)
data[2][i-1] = j+1;

// Поиск количества пройденных участником кругов
for (int j = 1; j <= n; ++j)
for (int i = 0; i < m; ++i)
if (info[i] == j)
++data[1][j-1];

// Поиск максимального количества кругов
max = data[1][0];
for (int i = 1; i < n; ++i)
if (data[1][i] > max)
max = data[1][i];

// Проверка: кто из участников проехал max кругов
for (int i = 0; i < n; ++i)
if (data[1][i] == max) {
data[3][i] = 1;
++count;
}

// Если max кругов проехал единственный участник, он - победитель
if (count == 1)
for (int i = 0; i < n; ++i)
if (data[3][i] == 1)
winner = data[0][i];

// Если max кругов проехало 2 и более участников, находим
// min номер проезда через черту
if (count > 1) {
for (int i = 0; i < n; ++i)
if (data[3][i] == 1)
if (data[2][i] < min)
min = data[2][i];
for (int i = 0; i < n; ++i)
if (data[2][i] == min)
winner = data[0][i];
}

// Вывод победителя
cout « winner;
return 0;
}
0
 Аватар для _Cheshire Cat_
6 / 4 / 2
Регистрация: 22.11.2018
Сообщений: 83
24.03.2019, 02:09
vakru, Ничего се ты наркоман конечно. И это работает ?

Добавлено через 3 часа 20 минут
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 <ctime>
 
using namespace std;
 
 
int main() {
    int n, m, g = 1, x;
    srand(time(NULL));
    cout << "Сколько Ездаков ???" << endl;
    cin >> n;
    cout << "Сколько Кругов ???" << endl;
    cin >> m;
 
    int **arr = new int*[n];
    for (int i = 0; i < n; i++) {
        arr[i] = new int[1];
    }
 
    for (int i = 0; i < n; i++) {
        arr[i][0] = g++;
        arr[1][i] = 0;
    }
 
    while (m) {
        x = rand() % n;
        x++;
        cout << x << "   ";
        arr[x - 1][1] += 1;
 
        if (arr[x - 1][1] == m) {
            m = 0;
        }
 
    }
    cout << "\nПобедитель под номером " << arr[x - 1][0];
}
Мне кажется твоя задача будет вот в таком виде выглядеть проще.
Под ночь просыпается желание по кодить. (если что то не верно прости я в школе не учился) и скажи я поправлю себя :3
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.03.2019, 02:09
Помогаю со студенческими работами здесь

Определить победителя матча
как считать такой фаил? нужно сначала считать первую строку потом вторую итд задача 61 на acmp 26 17 13 15 19 11 14 16 ...

Как определить победителя
Играем по очереди, игра в Windows Сапер уровень профессионал, быстро щелкаем мышкой, пока не попалась мина и игра остановлена... имеем...

Определить победителя матча
Одна из основных операций с числами – их сравнение. Мы подозреваем, что вы в совершенстве владеете этой операцией и можете сравнивать любые...

Определить номер победителя
Состязания: Будем считать, что побеждает спортсмен, у которого максимален наилучший бросок. Если таких несколько, то из них побеждает...

Определить, сколько баллов набрал спортсмен-победитель соревнования
В двумерном массиве хранится информация о баллах, полученных спортсменами-пятиборцами в каждом из пяти видов спорта (в первой строке -...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru