ShovelingLife 2022. 8. 11. 19:56
#include <algorithm>
#include <string>
#include <vector>

using namespace std;

long long solution(int n, vector<int> times) 
{
    long long min = 1, max = (long long)n * (*max_element(times.begin(), times.end()));
    long long answer = 0;

    while(min<=max)
    {
        long long avg = (min + max) / 2;
        long long tmp = 0;

        for (auto time : times)
            tmp += avg / time;

        if (n <= tmp)
        {
            answer = avg;
            max = avg - 1;
        }
        else
            min = avg + 1;        
    }
    return answer;
}