코드#include using namespace std;typedef long long ll;ll n, m, a[100003], s, e = 1e18,result,temp;int main() { cin >> n >> m; for(ll i = 0; i > a[i]; while(s = m) break; // 이 부분이 없으면 틀렸습니다, 오버플로우 때문인 듯 } if(temp 시간을 줄이고 늘리는 방식으로 최소값을 찾아주면 되는데, if(temp >= m) break; 부분을 넣어주지 않아서 헤맨 문제. a[i]값이 작고 mid 값이 큰 경우, mid / a[i] 값이 큰 값을 갖는데 이를 여러 번 더하면 temp가 long long의 범위를 넘어서게 된다. ..
3079번
코드 import sys input = sys.stdin.readline n, m = map(int, input().split()) balloon = [int(input()) for _ in range(n)] start, end = 1, 100000000000000000000000000 result = 0 while start = m: result = mid end = mid - 1 else: start = mid + 1 print(result) start와 end는 답의 범위를 생각해서 선언해주어야 한다. 이 문제에서 검사에 1e9시간 걸리는 1곳에서 1e9 명의 사람을 통과시켜야한다면 1e18시간이 걸리니 end는 이 값보다 크거나 같게 선언해주어야 한다. 풍선공장 문제와 유사했던 문제.