13305번: 주유소
표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1
www.acmicpc.net
주유소의 리터당 가격이 제일 싼 곳에서 더 싼 도시를 가기 전까지의 거리만큼 주유하면 되는 문제입니다.
적어도 더 싸게 주유가 가능한 2번째 도시를 가기 전까지는 첫 도시에서 리터당 가격 5를 주고 주유를 할 수밖에 없습니다. 두 번째 도시에서는 마지막 도시에 도착할 때까지 보다 싼 주유가 불가능하기에 거리 4를 이동하기 위해 필요한 모든 기름을 리터당 가격 2를 주고 주유를 해야 합니다. 5 x 2 + 2 x 4 = 18로 필요한 최소 비용은 18이죠.
#include<iostream>
#include<vector>
using namespace std;
int main(void)
{
int n; cin >> n;
vector<int> dis(n - 1);
vector<int> prices(n);
for (int i = 0; i < n - 1; i++) {
cin >> dis[i];
}
for (int i = 0; i < n; i++) {
cin >> prices[i];
}
int price = 1000000000;
long long res = 0;
for (int i = 0; i < n - 1; i++) {
if (prices[i] < price) {
price = prices[i];
}
res += 1LL * price * dis[i];
}
cout << res;
return 0;
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준/C,C++] 2164번: 카드2 (0) | 2021.03.15 |
---|---|
[백준/C,C++] 18258번: 큐 2 (0) | 2021.03.15 |
[백준/C,C++] 1541번: 잃어버린 괄호 (0) | 2021.03.14 |
[백준/C,C++] 11399번: ATM (0) | 2021.03.13 |
[백준/C,C++] 11047번: 동전 0 (0) | 2021.03.12 |
댓글