Андрей
Знаток
(376)
4 недели назад
Нашел на 3 ответ?
АндрейЗнаток (376)
4 недели назад
на 4:
def count_fallen_dominos(n, positions, powers):
# Массивы для отслеживания оставшихся костяшек
fallen_from_left = [False] * n
fallen_from_right = [False] * n
# Толкание от первой костяшки (Оля)
max_reach = positions[0] + powers[0]
fallen_from_left[0] = True
for i in range(1, n):
if positions[i] <= max_reach:
fallen_from_left[i] = True
max_reach = max(max_reach, positions[i] + powers[i])
else:
break
АндрейЗнаток (376)
4 недели назад
# Толкание от последней костяшки (Яло)
max_reach = positions[-1] - powers[-1]
fallen_from_right[-1] = True
for i in range(n-2, -1, -1):
if positions[i] >= max_reach:
fallen_from_right[i] = True
max_reach = min(max_reach, positions[i] - powers[i])
else:
break
# Подсчет общего количества упавших костяшек
total_fallen = sum(fallen_from_left) + sum(fallen_from_right)
return total_fallen
# Считывание входных данных
n = int(input())
positions = []
powers = []
for _ in range(n):
positions.append(int(input()))
for _ in range(n):
powers.append(int(input()))
# Вывод результата
result = count_fallen_dominos(n, positions, powers)
print(result)
АндрейЗнаток (376)
4 недели назад
на 3:
n, k = int(input()), int(input())
print(int(input()) * n + sum(int(input()) * (n // (1 << i)) for i in range(1, k)))
100%
‘x ‘style
Ученик
(105)
4 недели назад
#include <iostream>
#include <vector>
using namespace std;
int main() {
int N;
cin >> N;
vector<long long> x(N); // координаты
vector<long long> h(N); // магическая сила
for (int i = 0; i < N; ++i) {
cin >> x[i];
}
for (int i = 0; i < N; ++i) {
cin >> h[i];
}
// Массив, чтобы отслеживать, какие костяшки упали
vector<bool> fallen(N, false);
// Проверка с левой стороны (Оля)
long long rightmostFall = x[0] + h[0]; // максимальная координата, которую может достичь первая костяшка
fallen[0] = true; // первая костяшка упала
for (int i = 1; i < N; ++i) {
if (x[i] <= rightmostFall) {
fallen[i] = true; // эта костяшка упадет
rightmostFall = max(rightmostFall, x[i] + h[i]); // обновляем правую границу
} else {
break; // если текущая костяшка не упадет, выходим из цикла
}
}
// Проверка с правой стороны (Яло)
long long leftmostFall = x[N-1] - h[N-1]; // минимальная координата, которую может достичь последняя костяшка
fallen[N-1] = true; // последняя костяшка упала
for (int i = N-2; i >= 0; --i) {
if (x[i] >= leftmostFall) {
fallen[i] = true; // эта костяшка упадет
leftmostFall = min(leftmostFall, x[i] - h[i]); // обновляем левую границу
} else {
break; // если текущая костяшка не упадет, выходим из цикла
}
}
// Подсчет всех упавших костяшек
int fallenCount = 0;
for (bool isFallen : fallen) {
if (isFallen) {
fallenCount++;
}
}
cout << fallenCount << endl; // выводим итоговое количество упавших костяшек
return 0;
}
однажды юная волшебница Оля решила испытать силу этой цепи и толкнула первую костяшку. При падении костяшка выпускает магический импульс, который распространяется вперед и заставляет падать все костяшки, находящиеся на координатах не больше, чем xi+hi. Каждая следующая костяшка, попавшая под действие импульса, действует аналогично, создавая эффект магической цепной реакции.
Строго говоря, при воздействии на костяшку на позиции xi будут задеты, и как следствие выпустят уже свой магический импульс, все костяшки с такими координатами xj, что xi+hi меньше, либо равно xj.
К Оле решила присоединиться ее подруга Яло. Она решила проверить, как поведут себя костяшки, если их толкнуть с другой стороны. Девочка толкнула последнюю костяшку, которая находилась на самой правой позиции. И вот, что произошло.
Самая правая костяшка, которую толкнула Яло, выпустила магический импульс, который распространяется назад, заставляя падать костяшки, находящиеся на координатах не больше, чем xi-hi. Иными словами, если костяшка на позиции xi падает, то она сама выпускает магический импульс, под воздействием которого падают все костяшки, чьи координаты удовлетворяют условию xi-hi больше xj.
Таким образом, костяшки, падающие с одной стороны, могут встретиться с костяшками, падающими с другой стороны. При этом магические импульсы с двух сторон продолжат распространяться также, как и до встречи. Теперь обе цепные реакции Оли и Яло идут навстречу друг другу и вы очень хотите узнать, сколько же суммарно костяшек упадет.
Формат входных данных
Первая строка содержит одно целое число N (2≤N≤105) количество волшебных костяшек.
Следующие 2N строк содержат два набора целых чисел:
Первые N строк содержат координаты костяшек xi (0≤xi≤109). Следующие N строк содержат
магическую силу костяшек hi (0≤hi≤109). Гарантируется, что координаты образуют возрастающую
последовательность (никакие две костяшки не имеют одинаковых координат).
Формат выходных данных
Выведите одно целое число общее число костяшек, которые упадут после удара.
Система оценки
Решения, правильно работающие при n≤1000, будут оценены не менее чем в 50 баллов.
Замечание
В первом примере первая костяшка, которую толкнула Оля, не достанет до следующей (т.к. её
«высота» составляет всего 2), а поэтому от импульса слева упадёт только она. Стоящая
на координате 8 костяшка, которую толкнула Яло, заденет костяшку, стоящую на
координате 7, которая, в свою очередь, не заденет костяшку на координате 5, т.к. её
«высота» равна 1. На рисунке ниже показаны костяшки до того, как их толкнули, и их итоговое
состояние (красным отмечены места, которые «задела» хотя бы одна костяшка).
Ввод
4
1
5
7
8
2
3
1
1
Вывод
3