13305번: 주유소
표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1
www.acmicpc.net
있는 그대로 구현해주는 것이 관건이다. 차가 가면서 거리를 저장해두었다가, 더 싼 주유소를 만나면 이전 주유소의 가격으로 왔던 거리를 모두 계산해주면 풀 수 있다.
#include <cstdio>
int main(void){
int N;
scanf("%d", &N);
int road[N], price[N];
for(int i=0; i<N-1; i++)
scanf("%lld", &road[i+1]);
for(int i=0; i<N; i++)
scanf("%lld", &price[i]);
long long int car = 1, nprice=price[0], dis = 0, ans=0;
while(car<=N){
dis += road[car];
if(car==N){
ans += dis*nprice;
}
else if(nprice>price[car]){
ans += dis*nprice;
dis = 0;
nprice = price[car];
}
car++;
}
printf("%lld", ans);
}
'BOJ 길라잡이' 카테고리의 다른 글
[C/C++ 백준 11286번] 절댓값 힙 (Silver 1) (0) | 2020.10.14 |
---|---|
[C/C++ 백준 11279번] 최대 힙 (Silver 2) (0) | 2020.10.14 |
[C/C++ 백준 1927번] 최소 힙 (Silver 1) (0) | 2020.10.14 |
[C/C++ 백준 11047번] 동전 0 (Silver 1) (0) | 2020.10.14 |
[C/C++ 백준 2293번] 동전 1 (Silver 1) (0) | 2020.10.13 |