import java.util.*;

class Solution {
    //key: 날짜 , value: 카운트
    private static Map<Integer, Integer> map = new TreeMap<>();
    
    public int[] solution(int[] progresses, int[] speeds) {
        Queue<Job> jobQueue = new ArrayDeque<>();
        for(int i=0 ; i<progresses.length ; i++){
            jobQueue.add(new Job(progresses[i], speeds[i]));
        }
        int currentDay = 1;
        List<Integer> answerList = new ArrayList<>();
        while(!jobQueue.isEmpty()){
            Job job = jobQueue.poll();
            if(job.isClear(currentDay)){
                map.putIfAbsent(currentDay, 0);
                map.put(currentDay, map.get(currentDay)+1);
            }else{
                currentDay = job.renew(currentDay);
        
                map.putIfAbsent(currentDay, 0);
                map.put(currentDay, map.get(currentDay) + 1);
            }
        }
        int[] answer = new int[map.size()];
        int idx = 0;
        for(Map.Entry<Integer, Integer> entry : map.entrySet()){
            answer[idx++] = entry.getValue();
        }
        return answer;
    }
    
    static class Job{
        int value;
        int speed;
        
        Job(int v, int speed){
            this.value = v;
            this.speed = speed;
        }
        
        public boolean isClear(int currentDay){
            int nowProgress = speed * currentDay;//100 * 1
            int leftProgress = 100 - (value + nowProgress);
            if(leftProgress <= 0) return true;
            return false;
        }
        
        public int renew(int currentDay){
            //15진행율이 남았다 치자 난 스피드가 4이다
            //15/4 = 3, 15%4 = 3
            //15/5 = 3 15%5 = 0   나머지가 0이면 나누기 그대로 더하면되고, 0아니면 나누기+1하면됨
            //15/6 = 2 15%6 = 3
            
            int nowProgress = speed * currentDay;//50 * 1
            int leftProgress = 100 - (value + nowProgress);//100 - 51 = 49
            if(leftProgress%speed == 0){//6%1==0  49%50 은 49겠네
                return currentDay + (leftProgress/speed);
            }else{
                // if(leftProgress < speed) return currentDay + 1;
                return currentDay + (leftProgress/speed + 1);
            }
        }
    }
}