2262 : 토너먼트 만들기

풀이

큰 수가 많이 자주 올라갈 수록 합은 크게 나온다.

그렇다면 가장 큰 수 부터 묶어주면 된다!

코드

#include <stdio.h>
int max(int a, int b) { return a > b ? a : b; }
int n, i, j, a[257], ans;
int main() {
	scanf("%d", &n);
	for (i = 1; i <= n; i++) scanf("%d", &a[i]);
	for (i = n; i > 1; i--) {
		for (j = 1; j <= n; j++) if (a[j] == i) break;
		ans += a[j] - max(a[j - 1], a[j + 1]);
		for (; j <= n; j++) a[j] = a[j + 1];
	}
	printf("%d", ans);
	return 0;
}

아무말

백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2017-03-17 10:02

Read more posts by this author