diff --git "a/\353\260\261\354\244\200/Silver/32196.\342\200\205\352\270\211\355\226\211\342\200\205\354\227\264\354\260\250/README.md" "b/\353\260\261\354\244\200/Silver/32196.\342\200\205\352\270\211\355\226\211\342\200\205\354\227\264\354\260\250/README.md" new file mode 100644 index 0000000..f675815 --- /dev/null +++ "b/\353\260\261\354\244\200/Silver/32196.\342\200\205\352\270\211\355\226\211\342\200\205\354\227\264\354\260\250/README.md" @@ -0,0 +1,34 @@ +# [Silver III] 급행 열차 - 32196 + +[문제 링크](https://www.acmicpc.net/problem/32196) + +### 성능 요약 + +메모리: 35756 KB, 시간: 160 ms + +### 분류 + +그리디 알고리즘, 수학, 정렬 + +### 제출 일자 + +2024년 9월 17일 01:00:53 + +### 문제 설명 + +

서울특별시의 한 전철 노선을 급행화하려고 한다. 급행이란, 모든 역을 정차하는 일반(완행) 열차와 다르게 일부 역만 정차하는 방식으로 운행하는 열차이다. 이때, 대피선은 급행 열차가 일반 열차를 앞지르기 위해 설치한다.

+ +

이 노선을 일반 열차와 급행 열차 두 종류로 운행하려 한다. 현재 1번 역부터 N번 역까지 N개의 역이 있는 노선을 운행하는 데 일반 열차와 급행 열차 모두 똑같이 K분이 걸린다. i (1iN)번째 역에 대피선을 설치하면, 일반 열차의 운행 시간은 Ai분만큼 증가하고, 급행 열차의 운행 시간은 Bi분만큼 감소한다. 대피선은 역마다 최대 한 번만 설치할 수 있다.

+ +

이 노선에는 X개의 일반 열차와 Y개의 급행 열차가 운행하고 있다. 모든 열차의 운행 시간의 합은 (일반 열차의 운행 시간)×X+(급행 열차의 운행 시간)×Y으로 정의된다. N개의 역 중에 정확히 M개의 역을 골라 대피선을 설치하려고 한다. 적절히 대피선을 설치했을 때, 모든 열차의 운행 시간의 합의 최솟값을 구하여라.

+ +### 입력 + +

첫째 줄에 N, M, K, X, Y가 공백으로 구분되어 주어진다.

+ +

둘째 줄부터 N개의 줄에 걸쳐, i (1iN)번째 줄에는 Ai, Bi가 공백으로 구분되어 주어진다.

+ +### 출력 + +

첫째 줄에 적절히 대피선을 설치하고 난 후, 모든 열차의 운행 시간의 합의 최솟값을 출력한다.

+ diff --git "a/\353\260\261\354\244\200/Silver/32196.\342\200\205\352\270\211\355\226\211\342\200\205\354\227\264\354\260\250/\352\270\211\355\226\211\342\200\205\354\227\264\354\260\250.py" "b/\353\260\261\354\244\200/Silver/32196.\342\200\205\352\270\211\355\226\211\342\200\205\354\227\264\354\260\250/\352\270\211\355\226\211\342\200\205\354\227\264\354\260\250.py" new file mode 100644 index 0000000..51520d2 --- /dev/null +++ "b/\353\260\261\354\244\200/Silver/32196.\342\200\205\352\270\211\355\226\211\342\200\205\354\227\264\354\260\250/\352\270\211\355\226\211\342\200\205\354\227\264\354\260\250.py" @@ -0,0 +1,25 @@ +""" +[시도2] +- GPT 도움 +- 변화분, 그리디, 정렬 + +[시도1] +- 운행시간 최소값 (그리디) +- Bi 클수록, Ai 작을수록 +- 문제 이해 실패 : 각 역에서 운행시간을 K로 봄, 전체 라서 변화분을 봐야함 +""" + +import sys +readline = lambda: sys.stdin.readline().strip() + +# 전처리 +n, m, k, x, y = map(int, readline().split()) +diff_after_setup = [] # 대피선 설치 시 운행 시간 변화 +for i in range(n): + a, b = map(int, readline().split()) + diff_after_setup.append(a * x - b * y) +diff_after_setup.sort() # 변화가 작은수부터 오름차순 + +diff_sum = sum(diff_after_setup[:m]) + +print(k * (x + y) + diff_sum)