Skip to content

Commit 74ae81c

Browse files
committed
add task 12
1 parent 29f6b16 commit 74ae81c

File tree

3 files changed

+57
-1
lines changed

3 files changed

+57
-1
lines changed

Diff for: README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
* [`1604` В Стране Дураков](task_9_1604)
1313
* [`1726` Кто ходит в гости…](task_10_1726)
1414
* [`1067`](task_11_1067)
15-
* [`1494`](task_12_1494)
15+
* [`1494` Монобильярд](task_12_1494)
1616
* [`1521`](task_13_1521)
1717
* [`1628`](task_14_1628)
1818
* [`1650`](task_15_1650)

Diff for: task_12_1494/1494.cpp

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#include <iostream>
2+
3+
using namespace std;
4+
5+
struct Interval {
6+
unsigned int left, right;
7+
};
8+
9+
Interval ballss[50000];
10+
Interval * balls = ballss;
11+
int main() {
12+
int n;
13+
cin >> n;
14+
unsigned int time = 0, take_ball;
15+
while (--n >= 0) {
16+
cin >> take_ball;
17+
if (take_ball > time) {
18+
if (take_ball > time + 1) {
19+
(++balls)->left = time + 1;
20+
balls->right = take_ball - 1;
21+
time = take_ball;
22+
} else
23+
++time;
24+
} else {
25+
if (take_ball != balls->right) {
26+
cout << "Cheater";
27+
return 0;
28+
}
29+
if (--balls->right < balls->left) --balls;
30+
}
31+
}
32+
cout << "Not a proof";
33+
return 0;
34+
}

Diff for: task_12_1494/README.md

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Задача 12 (1494. Монобильярд)
2+
3+
## Условие
4+
5+
Стол для монобильярда, установленный в игровом доме уездного города N, оказался очень прибыльным вложением. До того, как в городе появился небезызвестный господин Чичиков. Раз за разом он выигрывал, и хозяин, подсчитывая убытки, понимал, что дело тут нечисто. Однако уличить подлеца в жульничестве не удавалось до прибытия в город N ревизора из Петербурга.
6+
Правила игры в монобильярд очень просты: нужно последовательно закатить в единственную лузу шары с номерами 1, 2, …, N (именно в этом порядке). Пока господин Чичиков играл, ревизор несколько раз подходил к столу и забирал из лузы последний закатившийся туда шар. В конце концов, оказалось, что Чичиков закатил в лузу все шары, а ревизор все шары достал и обследовал. Аферист утверждал, что закатил шары в правильном порядке. Хозяин понял, что это его шанс: ревизор должен помнить, в каком порядке он доставал шары. Однако так ли легко будет доказать жульничество?
7+
8+
Ограничение времени: 1.0 секунды
9+
Ограничение памяти: 64 МБ
10+
11+
## Исходные данные
12+
13+
В первой строке записано целое число N — количество бильярдных шаров (1 ≤ N ≤ 100000). В следующих N строках даны номера этих шаров в том порядке, в котором ревизор забирал их из лузы.
14+
15+
## Результат
16+
Выведите слово «Cheater», если Чичиков не мог закатить все N шаров в правильном порядке. Иначе выведите «Not a proof».
17+
18+
## Примеры
19+
| Исходные данные | Результат |
20+
|---|---|
21+
| 2 <br> 2 <br> 1 | Not a proof |
22+
| 3 <br> 3 <br> 1 <br> 2 | Cheater |

0 commit comments

Comments
 (0)