문제 내용은 그렇게 어렵지 않다. 현재노드와 지금까지 최소 가격을 비교하며 다음 노드까지의 거리를 곱해주면 됬다. 다만 서브태스크가 존재 하기 때문에 데이터 타입을 int가 아닌 long을 사용해야지 100점을 맞을 수 있다.
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
long[] len = new long[n-1];
long[] price = new long[n];
for(int i = 0; i<n-1;i++){
len[i]= sc.nextInt();
}
for(int i = 0 ; i<n; i++){
price[i]= sc.nextInt();
}
long min = Long.MAX_VALUE;
long sum = 0;
for(int i = 0; i<n-1;i++){
if(min > price[i])min = price[i];
sum += min*len[i];
}
System.out.println(sum);
}
}