풀이
투포인터(?) 같은 느낌으로 그리디하게 풀어주자.
각 카누들의 용량(?)을 정렬해주자.
정렬 후 배열의 양 끝에는 min, max 값이 들어있으므로
양 사이드에서 가운대로 포인터를 옮기며 매칭할 수 있다면 매칭해주자.
코드
#include <cstdio>
#include <algorithm>
int n, w, i, j, a[30003];
int main() {
scanf("%d %d", &w, &n);
for (; j<n; j++) scanf("%d", &a[j]);
std::sort(a, a+n);
for (j = n-1; j && i<j; j--) if (a[i]+a[j]<=w) i++;
printf("%d", n-i);
return 0;
}
아무말
백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이