코드
#include <iostream>
using namespace std;
int main(){
int N;
cin >> N;
long long distance[100001];
long long oilprice[100001];
long long min;
for(int i = 1; i < N; i++){
cin >> distance[i];
}
for(int i = 0; i < N; i++){
cin >> oilprice[i];
}
min = oilprice[0];
long long ans = min * distance[1];
for(int i = 2; i < N; i++){
if(min < oilprice[i-1]) ans += min*distance[i];
else{
min = oilprice[i-1];
ans += min*distance[i];
}
}
cout << ans;
return 0;
}
알게된 점
그냥 간단하게 최소값을 갱신해주면서 풀면되는 간단한 그리디문제다.
다만 숫자범위를 잘 확인해서 int인지 long long인지 확인해야한다.
int로 하면 점수가 58점이 나오니까 이 점을 주의해야 한다!
'하루하나코딩' 카테고리의 다른 글
백준 16637 : 괄호 추가하기 c++ (0) | 2023.02.01 |
---|---|
백준 1328 : 고층 빌딩 c++ (0) | 2023.01.31 |
백준 11399 : ATM c++ (0) | 2023.01.29 |
백준 2302 : 극장 좌석 c++ (0) | 2023.01.28 |
백준 2631 : 줄 세우기 c++ (0) | 2023.01.27 |