Тема: Алготестер задача №1683. Захисні маски
Умова.
Захиснi маски. Обмеження: 1 сек., 256 МiБ. Зеник хоче вiдвiдати n магазинiв у вказаному порядку. Щоб зайти в магазин, вiн повинен мати захисну маску.На входi в i-ий магазин продаються одноразовi маски за цiною ai та багаторазовi за цiною bi. Зеник купить не бiльше однiєї маски на входi в i-ий магазин. Якщо вiн придбає одноразову, то використає її тiльки в цьому магазинi, а потiм утилiзує. Багаторазову маску можна використовувати в усiх наступних магазинах.Вам потрiбно сказати, яку найменшу суму грошей Зеник витратить на маски.
Вхiднi данi
У першому рядку задано одне цiле число n - кiлькiсть магазинiв, якi повинен вiдвiдати Зеник.У другому рядку задано n цiлих чисел ai - цiни одноразових масок у гривнях.У третьому рядку задано n цiлих чисел bi - цiни багаторазових масок у гривнях.
Вихiднi данi
Одне число - найменшу суму грошей, яку Зеник витратить на маски (в гривнях).
Обмеження1≤n≤105,1≤ai, bi≤109.
Приклади
Вхiднi данi (stdin)
7
10 12 15 11 9 8 16
100 200 150 40 47 60 74
Вихiднi данi (stdout)77
Вхiднi данi (stdin)
7
10 12 15 11 9 8 16
100 200 150 50 47 60 74
Вихiднi данi (stdout)81
Примiтки.У першому прикладi Зенику вигiдно купити одноразовi маски в перших трьох магазинах i багаторазову в четвертому магазинi. Тодi йому доведеться заплатити 10 + 12 + 15 + 40 = 77грн.У другому прикладi вигiдно придбати одноразовi маски в усiх магазинах.https://algotester.com/uk/ArchiveProble … File/40786
import java.util.Scanner;
public class Main {
static int n;
static int[] arr_once;
static int[] arr_much;
public static void main(String[] args) {
System.out.println(result());
}
public static void input(){
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
arr_once = new int[n];
arr_much = new int[n];
for (int i = 0; i < n; i++) arr_once[i] = scanner.nextInt();
for (int i = 0; i < n; i++) arr_much[i] = scanner.nextInt();
}
public static int result(){
input();
int sum_help = 0;
long S = 9223372036854775807L;
for (int i = 0; i < n-1; i++){
sum_help += arr_once[i];
S = Math.min(sum_help+arr_much[i+1], S );
}
return (int) Math.min(S , Math.min(sum_help + arr_once[n-1] , arr_much[0] ));
}
}
Я йшов спочатку масиву і знаходи вартість, якщо купити першу одноразову і другу багаторазову, дві одноразові і третю багато разову, три одноразові і четверту багаторазову. З цих сум знайшов мінімум і порівняв з сумою всіх одноразових масок і вартістю першої багаторазової. Проте на 13 прикладі помилка.
Щиро вдячний за допомогу!