반응형
문제 출처 :
https://www.acmicpc.net/problem/1246
알고리즘 분석 :
문제 해결에 필요한 사항
1. 정렬
이 문제는 결국 사람들에게 달걀을 팔았을 때 이윤을 최대로 해야하는 것이 관건인데
내림차순으로 정렬하면 arr[i]가 arr[i+1]보다 항상 크거나 같다.
따라서 arr[i] * i 가 최대 이윤이 될 것이고, 최대가 될때의 i와 그때의 arr[i] * i가 정답이 될 것이다.
소스 코드 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #include <iostream> #include <cstdio> #include <algorithm> #include <functional> using namespace std; int arr[1002]; int main() { int n, m; scanf("%d %d", &n, &m); for (int i = 1; i <= m; i++) scanf("%d", &arr[i]); sort(arr + 1, arr + 1 + m, greater<int>()); int pos = 0; for (int i = 1; i <= m; i++) { if (i > n) break; if (arr[i] * i > arr[pos] * pos) pos = i; } printf("%d %d", arr[pos], arr[pos] * pos); return 0; } // This source code Copyright belongs to Crocus // If you want to see more? click here >> | Crocus |
반응형
'Applied > 알고리즘 문제풀이' 카테고리의 다른 글
[1926번] 그림 (0) | 2017.06.22 |
---|---|
[1057번] 토너먼트 (0) | 2017.06.22 |
[1058번] 친구 (0) | 2017.06.20 |
[10973번] 이전 순열 (0) | 2017.06.20 |
[10972번] 다음 순열 (0) | 2017.06.20 |