나무 키우기
시간 제한3초메모리 제한1024 MB
매일 가장 작은 나무의 키를 두 배로 만들 때, X일 후 K번째로 작은 나무의 키를 10^9+7로 나눈 나머지로 구하는 문제입니다.
문제
현제는 일렬로 심어진 개의 나무를 키운다. 왼쪽부터 각 나무의 초기 높이는 , , , 이다.
현제는 첫 번째 날부터 매일 높이가 가장 작은 나무를 하나 골라 물을 준다. 물을 받은 나무의 높이는 2배가 된다. 높이가 가장 작은 나무가 여러 그루이면 그중 가장 왼쪽에 있는 나무에 물을 준다.
이때 아래 쿼리를 수행하는 프로그램을 작성하여라.
- : 번째 날까지 물을 주고 난 후, 번째로 작은 나무의 높이를 로 나눈 나머지를 구한다.
입력
첫 번째 줄에 나무의 수 이 주어진다. ()
다음 줄에 나무의 초기 높이 , , , 이 공백으로 구분되어 주어진다. ()
다음 줄에 쿼리의 수 가 주어진다. ()
이어서 개의 줄에 쿼리의 정보 , 가 공백으로 구분되어 주어진다. (; )
모든 입력은 정수이다.
출력
각 쿼리의 정답을 입력된 순서대로 한 줄에 하나씩 출력한다.