Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Информатика олимпиада сделал все задания на 100 а это не получается

Матвей Мамедов Ученик (107), открыт 1 месяц назад
Странная планета
Ограничение по времени: 1
1
секунда
Ограничение по памяти: 256
256
мегабайт
Космонавт высадился на планете, очень похожей на Землю, чтобы провести важный эксперимент. Он знает, что дата начала эксперимента —

D1M1Y1
D
1
M
1
Y
1
(день, месяц, год), а дата окончания —

D2M2Y2
D
2
M
2
Y
2
. Однако выяснилось, что календарь этой планеты отличается от земного —

в году N
N
месяцев, i
i
-й месяц года имеет длительность Li
L
i
дней.
Помогите космонавту рассчитать, сколько дней продлится эксперимент на этой планете, учитывая, что в его продолжительность входят дни начала и окончания.

Формат входных данных
Первая строка содержит целое число D1
D
1
(1≤D1≤105
1

D
1

10
5
) —

день начала эксперимента.
Вторая строка содержит целое число M1
M
1
(1≤M1≤105
1

M
1

10
5
) —

месяц начала эксперимента.
Третья строка содержит целое число Y1
Y
1
(1≤Y1≤105
1

Y
1

10
5
) —

год начала эксперимента.
Четвёртая строка содержит целое число D2
D
2
(1≤D2≤105
1

D
2

10
5
) —

день окончания эксперимента.
Пятая строка содержит целое число M2
M
2
(1≤M2≤105
1

M
2

10
5
) —

месяц окончания эксперимента.
Шестая строка содержит целое число Y2
Y
2
(1≤Y2≤105
1

Y
2

10
5
) —

год окончания эксперимента.
Седьмая строка содержит целое число N
N
(1≤N≤105
1

N

10
5
) —

число месяцев в году на странной планете.
Следующие N
N
строк содержат N
N
целых чисел Li
L
i
(1≤Li≤105
1

L
i

10
5
) по одному числу в строке —

длительности месяцев на странной планете.
Гарантируется, что дата окончания эксперимента не раньше даты начала и что обе даты корректны.

Формат выходных данных
Выведите одно целое число —

продолжительность эксперимента, выраженную в днях.
Обратите внимание, что ответ может превышать возможное значение 32
32
‑битной целочисленной переменной, поэтому необходимо использовать 64
64
‑битные целочисленные типы данных (тип int64
64
в языке Pascal, тип long long в C++, тип long в Java и C#).

Система оценки
Решения, правильно работающие при M1=M2
M
1
=
M
2
, Y1=Y2
Y
1
=
Y
2
, будут оцениваться в 15
15
баллов.
Решения, правильно работающие при Y1=Y2
Y
1
=
Y
2
, будут оцениваться в 40
40
баллов.

Замечание
В первом примере дата начала эксперимента —

40.4.2024
40.4.2024
(день.месяц.год), дата окончания —

45.4.2024
45.4.2024
. Легко видеть, что эксперимент начинается и заканчивается в одном месяце одного года и длится с 40
40
по 45
45
день включительно, то есть 6
6
дней.
Во втором примере дата начала эксперимента 40.4.2024
40.4.2024
, дата окончания 2.2.2025
2.2.2025
. Всего в году 7
7
месяцев. Продолжительность месяца с номером 4
4
равна 72
72
дням. В эксперимент войдут последние 33
33
дня четвёртого месяца 2024
2024
года, полностью войдут пятый, шестой и седьмой месяцы 2024
2024
, первый месяц 2025
2025
и два дня второго месяца 2025
2025
года.

Ввод
Вывод
40
4
2024
45
4
2024
7
12
3
60
72
40
22
5
6
40
4
2024
2
2
2025
7
12
3
60
72
40
22
5
114
2 ответа
Андрей Высший разум (461022) 1 месяц назад
 #include <iostream>
#include <vector>

using namespace std;

int main() {
long long d1, m1, y1, d2, m2, y2, n;
cin >> d1 >> m1 >> y1 >> d2 >> m2 >> y2 >> n;
vector<long long> m(n + 1, 0);
for (long long i = 1; i <= n; ++i) {
cin >> m[i];
m[i] += m[i - 1];
}
cout << (y2 - y1) * m[n] + m[m2 - 1] - m[m1 - 1] + d2 - d1 + 1;
}
m[i - 1] - кол-во дней, прошедших от начала года до начала месяца i
m[n] - кол-во дней в году.
СергейГений (59759) 1 месяц назад
Кажется тут и массив не нужен, так как индексы известны на этапе его заполнения.
Андрей Высший разум (461022) Сергей, Да, можно и без массива, т.к. достаточно трёх чисел - для указанных месяцев и для всего года. Но при ограничении памяти 256 Mb максимальная длина массива 800 Kb (максимум 10⁵ месяцев) не имеет значения.
Дрим ЭтерналУченик (183) 1 месяц назад
могу поинтересоваться на каком языке это написано?
Сергей Гений (59759) Дрим Этернал, С++
Vita CujohУченик (101) 1 месяц назад
Андрей, я вам руки целовал
Александра ШабалинаУченик (103) 4 недели назад
Спасибо Вам, очень помогли)
Ссср Чикотило Ученик (104) 4 недели назад
хаха спс конечно но для тех кто просто списал баллы не поставят так как защитают за списавание код то робочий и правильный для типов которые хотят списать нужно делать запрос в гпт чтобы код изменил )
sponge bobУченик (119) 4 недели назад
просто списанный код немного меняй и всё
Похожие вопросы