μ•Œκ³ λ¦¬μ¦˜/λ¬Έμ œν’€μ΄ Baekjoon

[λ°±μ€€] κ·Έλ¦¬λ””μ•Œκ³ λ¦¬μ¦˜ - 2217.λ‘œν”„

λ˜νš¨λ‹ˆ 2020. 3. 14. 20:45

문제

N(1≤N≤100,000)개의 λ‘œν”„κ°€ μžˆλ‹€. 이 λ‘œν”„λ₯Ό μ΄μš©ν•˜μ—¬ 이런 μ €λŸ° 물체λ₯Ό λ“€μ–΄μ˜¬λ¦΄ 수 μžˆλ‹€. 각각의 λ‘œν”„λŠ” κ·Έ κ΅΅κΈ°λ‚˜ 길이가 λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— λ“€ 수 μžˆλŠ” 물체의 μ€‘λŸ‰μ΄ μ„œλ‘œ λ‹€λ₯Ό μˆ˜λ„ μžˆλ‹€.

ν•˜μ§€λ§Œ μ—¬λŸ¬ 개의 λ‘œν”„λ₯Ό λ³‘λ ¬λ‘œ μ—°κ²°ν•˜λ©΄ 각각의 λ‘œν”„μ— κ±Έλ¦¬λŠ” μ€‘λŸ‰μ„ λ‚˜λˆŒ 수 μžˆλ‹€. k개의 λ‘œν”„λ₯Ό μ‚¬μš©ν•˜μ—¬ μ€‘λŸ‰μ΄ w인 물체λ₯Ό λ“€μ–΄μ˜¬λ¦΄ λ•Œ, 각각의 λ‘œν”„μ—λŠ” λͺ¨λ‘ κ³ λ₯΄κ²Œ w/k 만큼의 μ€‘λŸ‰μ΄ 걸리게 λœλ‹€.

각 λ‘œν”„λ“€μ— λŒ€ν•œ 정보가 μ£Όμ–΄μ‘Œμ„ λ•Œ, 이 λ‘œν”„λ“€μ„ μ΄μš©ν•˜μ—¬ λ“€μ–΄μ˜¬λ¦΄ 수 μžˆλŠ” 물체의 μ΅œλŒ€ μ€‘λŸ‰μ„ κ΅¬ν•΄λ‚΄λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. λͺ¨λ“  λ‘œν”„λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•  ν•„μš”λŠ” μ—†μœΌλ©°, μž„μ˜λ‘œ λͺ‡ 개의 λ‘œν”„λ₯Ό κ³¨λΌμ„œ μ‚¬μš©ν•΄λ„ λœλ‹€.

 

μž…λ ₯

첫째 쀄에 μ •μˆ˜ N이 μ£Όμ–΄μ§„λ‹€. λ‹€μŒ N개의 μ€„μ—λŠ” 각 λ‘œν”„κ°€ 버틸 수 μžˆλŠ” μ΅œλŒ€ μ€‘λŸ‰μ΄ μ£Όμ–΄μ§„λ‹€. 이 값은 10,000을 λ„˜μ§€ μ•ŠλŠ” μžμ—°μˆ˜μ΄λ‹€.

 

좜λ ₯

첫째 쀄에 닡을 좜λ ₯ν•œλ‹€.

 

예제 μž…λ ₯1

2

10

15

 

예제 좜λ ₯1

20

 

생각

sort(W, W+N, greater<int>());

greater<int>()μ‚¬μš©ν•˜λ©΄ ν•¨μˆ˜ μ •μ˜ ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.

 

μž‘μ„±ν•œ μ½”λ“œ

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
36
37
38
39
#include <iostream>
#include <algorithm>
 
using namespace std;
 
bool desc(int a, int b){
    return a > b;
}
 
int main(int argc, const char * argv[]) {
    // insert code here...
 
    ios::sync_with_stdio(false);
    cin.tie(NULL);
   
    int N;
    cin >> N;
    
    int W[N];
    
    // κ° λ‘œν”„κ°€ λ²„ν‹Έ μˆ˜ μžˆλŠ” μ΅œλŒ€ μ€‘λŸ‰
    for(int i=0; i<N; i++){
        cin >> W[i];
    }
    
    sort(W, W+N, desc); // λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬
    
    int ans = 0;
    for(int i=0; i<N; i++){
        W[i] = W[i] * (i+1);
        if(ans < W[i]){
            ans = W[i];
        }
    }
    cout << ans << "\n";
    return 0;
}
 
 
Colored by Color Scripter
λ°˜μ‘ν˜•