이미 지나친 주유소 중 가장 저렴한 곳에서 주유하기를 반복한다.
이 때 첫 번째 주유소의 경우 지나친 곳이 없으므로,
첫 번째 주유소 비용을 최소 주유 비용으로 초기화해야 한다.
마지막으로 서브태스크 통과를 위해 long long
을 적절히 사용하자.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
vector<int> dist(n - 1);
vector<int> price(n);
for (int i = 0; i < n - 1; i++) cin >> dist[i];
for (int i = 0; i < n; i++) cin >> price[i];
long long cost = 0;
long long mini = price[0];
for (int i = 0; i < n - 1; i++) {
if (price[i] < mini) mini = price[i];
cost += mini * dist[i];
}
cout << cost;
return 0;
}