아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Õhne vanaraamatupood

면접 대비

시간 제한1초메모리 제한1023 MB

요약
봇들이 이전 날 평균 가격에 마진을 적용해 가격을 다시 계산하는 과정을 모의 실험하고, T일 아침 각 봇의 가격을 출력한다.
난이도

보통10점 중 6점

유형
구현, 시뮬레이션, 수학, 배열
정답자
아직 제출이 없습니다

문제

Õhne vanaraamatupood는 특히 희귀하고 오래된 책을 인터넷으로 판매하는, 전 세계를 상대로 하는 스타트업이다. 이 포털에서 활동하는 판매자 대부분은 봇(로봇)으로, 서로에게서 책을 싸게 사들인 뒤 다른 사용자에게 더 비싸게 되파는 것을 노린다. 책이 워낙 희귀하다 보니, 판매자가 실제로는 가지고 있지 않은 책까지도 매물로 올라온다.

다음 알고리즘에 따라 동작하는 아주 단순한 판매 봇을 생각하자.

  • 어떤 책이 아직 한 번도 매물로 올라온 적이 없다면, 첫 번째 봇이 임의의 가격을 스스로 정한다. 이 날을 0일이라 하고, 이 봇의 번호를 1번이라 한다.
  • 각 봇은 일정한 간격으로(매 II일마다) 활성화된다. 활성화되면 포털에 올라와 있는 모든 매물(자기 자신의 매물 포함)의 평균 가격을 구하고, 여기에 자신의 마진(가산율) MM을 적용하여, 즉 평균에 1+M1 + M을 곱하여 새로운 매물 가격을 계산한다. 이때 계산은 전날이 끝난 시점의 판매자 가격들을 기준으로 한다.

같은 날에 활성화되는 봇들은 모두 같은 스냅숏, 곧 전날 종료 시점의 가격들을 기준으로 새 가격을 계산한다. 따라서 하루 안에서 이루어진 갱신끼리는 서로를 보지 못한다.

모든 가격은 포털에 1센트 단위로 게시되며, 계산 과정에서 생긴 센트의 소수 부분은 0.50.5센트 이상이면 올림한다.

어떤 가격도 1,000,000.00을 넘지 않는다고 가정해도 좋다.

한 권의 책에 대해, 주어진 날이 시작되는 시점에 위 봇들이 부르는 가격을 구하는 프로그램을 작성하라. (그 날에 일어나는 가격 변화는 반영하지 않는다.)

입력

첫째 줄에 세 수가 주어진다: 봇의 수 NN (1≤N≤1001 \le N \le 100), 첫 번째 봇이 책에 매긴 가격 P0P_0 (0.01≤P0≤9999.990.01 \le P_0 \le 9999.99), 그리고 우리가 관심 있는 날의 번호 TT (1≤T≤100001 \le T \le 10000).

이어지는 NN개의 줄에는 각 봇의 정보가 주어진다: 첫 매물을 올리는 날 SiS_i (S1=0S_1 = 0이고, 그 외에는 1≤Si<T1 \le S_i < T), 매물 갱신 간격 IiI_i (1≤Ii≤T1 \le I_i \le T), 마진 MiM_i (0<Mi<10 < M_i < 1, 소수점 아래 최대 5자리).

출력

TT일의 아침에 각 봇이 이 책에 대해 부르는 가격을, 입력에 주어진 봇 순서대로 한 줄에 하나씩 출력한다. 모든 가격은 소수점 아래 정확히 두 자리로 출력한다.

예제4

  1. 예제 1

    입력
    3 17.99 1000
    0 12 0.032
    18 6 0.020
    14 19 0.017
    
    예상 출력
    216.27
    213.75
    205.07
    
  2. 예제 2

    입력
    1 100.00 1
    0 1 0.50000
    
    예상 출력
    100.00
    
  3. 예제 3

    입력
    1 10.00 5
    0 1 0.10000
    
    예상 출력
    14.64
    
  4. 예제 4

    입력
    2 50.00 30
    0 5 0.05000
    7 3 0.10000
    
    예상 출력
    81.15
    91.39