🔗 문제
https://www.acmicpc.net/problem/2217
2217번: 로프
N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하
www.acmicpc.net
🖍 풀이
뭔 소리인가 이해하는데 3분 더 걸린 문제
10, 15 로프를 예를 들자면 10 줄은 10 중량을 15 중량을 15 중량을 감당할 수 있다.
10과 15. 두 줄을 쓴다고 25 중량은 불가하다. 왜냐하면 10줄은 10까지 밖에 견딜 수 없기 때문이다.
그래서 두 줄을 모두 사용한다면 [가장 작은 10줄*사용줄 수] 값인 20이 정답이다.
💾 소스
#include <iostream>
#include <algorithm>
#include <vector>
#define MAX 100000
int main()
{
int N, answer = 0;
int K[MAX];
//input
std::cin >> N;
for(int i=0; i<N; ++i)
std::cin >> K[i];
//solve
std::sort(K, K+N); // begin, end
for(int i=0; i<N; ++i)
{
answer = std::max(answer, (N-i)*K[i]);
}
//output
std::cout << answer;
return 0;
}