이분탐색으로 풀 수 있습니다. 주의할 점은 int의 범위가 넘어갈 수 있으므로 int형 대신 long long을 사용해주셔야 합니다. #include #include #include using namespace std; int main() { int N, K, tmp; vector lanlenght; long long left = 0; long long right = 2247483648; long long mid; int lansum; cin >> N >> K; for (int i = 0;i > tmp; lanlenght.push_back(tmp); } while (left +1 < right) { lansum = 0; mid = (left + right) / 2; for (..
#include #include #include using namespace std; int main() { vector tree; int N, M, right; int max = 0; int left = 0; int tmp; int mid; int value; long long treesum = 0; cin >> N >> M; for (int i = 0;i > tmp; tree.push_back(tmp); } sort(tree.begin(), tree.end()); right = tree.at(N - 1); while (left + 1 < right) { treesum = 0; mid = (left + right) / 2; for (int i = 0;i < N;i++) { ..