해결된 질문
작성
·
183
0
#include <bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
long long int N, M, low=1, high=0, ret=__LONG_LONG_MAX__;
cin >> N >> M;
vector<long long int> color;
for (int i=0;i<M;i++){
long long int temp;
cin >> temp;
color.push_back(temp);
high=max(temp,high);
}
while(low<=high){
long long int mid=(low+high)/2;
long long int cnt=0;
for (long long int &i:color){
cnt+=i/mid;
if (cnt%mid) cnt++;
}
if (cnt>N){
low=mid+1;
}
else{
ret=min(ret,mid);
high=mid-1;
}
}
cout << ret;
}
강의를 듣기 전에 먼저 풀어보고 계속 틀려서 강의에서 나온대로 어느정도 수정했는데도 틀리는데 이유를 모르겠습니다...!
답변 2
0
아 그 부분이 잘못된 거였군요.. 감사합니다
이 전에 썼던 코드도 같은 결과가 나와야 할 것 같은데 통과가 안 돼서 질문드려봅니다
for (long long int &i:color){
if (i<=mid){
cnt++;
}
else if (!i%mid) cnt+=i/mid;
else cnt+=i/mid+1;
}
0
안녕하세요 JOXX님 ㅎㅎ
잘 짜셨네요. ㅎㅎ
다만,
for (long long int &i:color){
cnt+=i/mid;
if (i%mid) cnt++;
}
이렇게 되어야 하는게 아닐까요?
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.