Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
max0072233
Сообщений: n/a
#1

Обьясните как работает программа условие и код есть - C++

16.01.2011, 16:03. Просмотров 415. Ответов 0
Метки нет (Все метки)

Помогите пожалуйста. Я начинающий программист. Вот есть программа вот есть условие. Работает хорошо. Только что делает каждая процедура не понимаю Объясните пожалуйста поэтапно (по строкам, по предложениям, как удобно) как работает и что делает программа.
Заранее большое спасибо.

Взято отсюда http://acm.timus.ru/problem.aspx?space=1&num=1794.

1794. Шедевры мировой архитектуры
Ограничение времени: 1.0 секунды
Ограничение памяти: 64 МБ
Мария Ивановна оповестила всех учеников своего пятого класса, что через месяц она проведёт урок на тему «Шедевры мировой архитектуры». К этому уроку каждый из ребят должен был подготовить небольшой доклад об одном из знаменитых архитектурных сооружений. Как обычно, отличники подготовили свой доклад заранее, а двоечники начали готовиться к уроку только за несколько минут до него.
Начался урок. По сложившейся традиции проведения подобных уроков, дети садятся в круг и выступают один за другим по часовой стрелке. Отличники любят выступать одними из первых, в то время как двоечники хотят отвечать как можно позже, пытаясь доделать задание прямо во время урока.
Мария Ивановна спросила у каждого ученика, каким по счёту он хочет выступать. Теперь ей предстоит решить, кто должен выступить первым, чтобы как можно больше детей выступили по счёту ровно теми, какими они хотят.
Исходные данные
В первой строке записано целое число n — количество учеников в классе (2 ≤ n ≤ 105). Мария Ивановна занумеровала всех детей числами от 1 до n в порядке по часовой стрелке. Во второй строке через пробел записаны числа a1, …, an (1 ≤ ai ≤ n), где ai — номер, названный i-м учеником.
Результат
Выведите номер ученика, которого Мария Ивановна спросит первым. Если возможно несколько вариантов ответа, выведите любой.

Примеры
исходные данные

4
4 1 2 3


результат

2

исходные данные

3
1 1 1

результат

3


Код программы:

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <iostream>
 
using namespace std;
 
long int N;
 
long int *_prav;
 
long int *_lev;
 
int main()
 
{
 
cin>>N;
 
_prav = new long int[2*N];
 
_lev = new long int[N];
 
for (long int q=0; q<N; q++) cin>>_prav[q];
 
for (long int q=0; q<N; q++)
 
{
 
_lev[q]=_prav[q];
 
_prav[q]-=q+1;
 
_prav[q+N]=_prav[q]-N;
 
}
 
long int _max=_prav[0];
 
long int _pos=1;
 
long int _count=1;
 
for (long int w=0; w<N; w++)
 
{
 
if (_prav[w]>-N)
 
{
 
_count=1;
 
for (long int q=w+1; q<2*N; q++)
 
{
 
if (_prav[q]==_prav[w])
 
{
 
_prav[q]=-N;
 
_count++;
 
}
 
}
 
_prav[w]=_count;
 
if (w==0) _max=_prav[w];
 
else if (_prav[w]>_max)
 
{
 
_max=_prav[w];
 
_pos=w-(_lev[w])+2;
 
}
 
}
 
}
 
if (_pos<=0) _pos+=N;
 
cout<<_pos<<endl;
 
getchar();getchar(); 
 
return 0;
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2011, 16:03     Обьясните как работает программа условие и код есть
Посмотрите здесь:

обьясните пожалуйта как работает программа - C++
#include &lt;sstream&gt; #include &lt;iostream&gt; int main() { std::stringstream ss; long int u, count = 0; std::cout &lt;&lt;&quot;Vvedite celoe...

метод гауса..обьясните как работает программа - C++
ipMatr(); for(opMatr(),k=0;k&lt;=n;k++) //прямой ход метода Гаусса; {for(aa=fabs(a),i=k,j=k+1;j&lt;=n;j++)//поиск макс....

Есть код программы на вычисление количества слов, как изменить условие? - C++
Есть код программы, как изменить условие, чтобы вычисляло только количество слов, которые заканчиваются на букву а? #include &lt;iostream&gt; ...

Код, который проверяет есть ли в регистре идентификатор GUID - как он работает? - C++
Есть код который как бы проверяет есть ли в регистре идентификатор GUID или нет, вот он: hr=HRESULT; CLSID clsid; if ((hr =...

Обьясните, как работает цикл - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { int j = 0; string str,str1; cout&lt;&lt;&quot;Enter str &quot;;...

Обьясните как работает рекурсия - C++
#include &lt;iostream&gt; using namespace std; int Multiply(int, int); int main() { int number; int exponent; cout&lt;&lt;&quot;Enter...

обьясните условие - C++
минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы. например 1 2 3 4 5 6 7 8 9 побочная...

Обьясните условие задачи - C++
Обьясните пожалуйста что нужно сделать?? Вычислить значение y в зависимости от выбранной функции от (x), аргумент которой...

Плз обьясните неучу как выполнить в VC++ код на asme. - C++
Плз обьясните неучу как выполнить в VC++ код на asme. Дериктива _asm а как с ней работать ? Допутим есть код для примера : ...

Обьясните как работает рекурсия в данной задаче - C++
есть вот такая програмка: #include &lt;stdio.h&gt; #include &lt;conio.h&gt; int a,cnt=0,N,K; void fun(long S, int tek) { ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru