Algorithm

[SWEA 1208] Flatten

승우승 2019. 7. 29. 13:49
반응형

최대점과 최소점의 차이를 가장 작게 하기 위해서는 가장 큰값을 빼고 가장 낮은값을 더해주면 된다.

즉, 배열을 먼저 sorting한 다음 덤프하는 수만큼 연산을 하고 sorting을 반복해주면 된다.


소스코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <cstdio>
#include <algorithm>
#define MAX 100
using namespace std;
void solve() {
    int dumpCnt;
    for (int tc=1; tc<=10; tc++) {
        int map[MAX]={0,};
        scanf("%d"&dumpCnt);
        for (int i=0; i<MAX; i++scanf("%d"&map[i]);
        sort(map, map+MAX);
        for (int i=0; i<dumpCnt; i++) {
            map[0]++;
            map[MAX]--;
            sort(map, map+MAX);
        }
        
        printf("#%d %d\n", tc, map[MAX]-map[0]);
    }
}
int main() {
    solve();
    return 0;
}
cs


반응형