그리디
를 이용하는 문제
pq.top()
)에 다음 도시까지의 거리를 곱해 answer
에 더해준다.answer
범위는 long long
인거 알았는데, int*int
가 자동으로 형변환 될 줄 알았는데 안되네..
dist
랑 cost
모두 long long
형으로 바꿔주니 성공했다.
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
int main(void)
{
int n;
cin >> n;
vector<long long> dist(n-1);
vector<long long> cost(n);
for (int i = 0; i < n-1; i++)
{
cin >> dist[i];
}
for (int i = 0; i < n; i++)
{
cin >> cost[i];
}
long long answer = 0;
priority_queue<long long, vector<long long>, greater<long long>> pq;
for (int i = 0; i < n-1; i++)
{
pq.push(cost[i]);
answer += pq.top()*dist[i];
}
cout << answer << endl;
return 0;
}