CF257E.Greedy Elevator

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

The mm -floor (m>1)(m>1) office of international corporation CodeForces has the advanced elevator control system established. It works as follows.

All office floors are sequentially numbered with integers from 1 to mm . At time t=0t=0 , the elevator is on the first floor, the elevator is empty and nobody is waiting for the elevator on other floors. Next, at times tit_{i} (ti>0)(t_{i}>0) people come to the elevator. For simplicity, we assume that one person uses the elevator only once during the reported interval. For every person we know three parameters: the time at which the person comes to the elevator, the floor on which the person is initially, and the floor to which he wants to go.

The movement of the elevator between the floors is as follows. At time tt ( t>=0t>=0 , tt is an integer) the elevator is always at some floor. First the elevator releases all people who are in the elevator and want to get to the current floor. Then it lets in all the people waiting for the elevator on this floor. If a person comes to the elevator exactly at time tt , then he has enough time to get into it. We can assume that all of these actions (going in or out from the elevator) are made instantly. After that the elevator decides, which way to move and at time (t+1)(t+1) the elevator gets to the selected floor.

The elevator selects the direction of moving by the following algorithm.

  • If the elevator is empty and at the current time no one is waiting for the elevator on any floor, then the elevator remains at the current floor.
  • Otherwise, let's assume that the elevator is on the floor number xx (1<=x<=m)(1<=x<=m) . Then elevator calculates the directions' "priorities" pupp_{up} and pdownp_{down} : pupp_{up} is the sum of the number of people waiting for the elevator on the floors with numbers greater than xx , and the number of people in the elevator, who want to get to the floors with the numbers greater than xx ; pdownp_{down} is the sum of the number of people waiting for the elevator on the floors with numbers less than xx , and the number of people in the elevator, who want to get to the floors with the numbers less than xx . If pup>=pdownp_{up}>=p_{down} , then the elevator goes one floor above the current one (that is, from floor xx to floor x+1x+1 ), otherwise the elevator goes one floor below the current one (that is, from floor xx to floor x1x-1 ).

Your task is to simulate the work of the elevator and for each person to tell the time when the elevator will get to the floor this person needs. Please note that the elevator is large enough to accommodate all the people at once.

输入格式

The first line contains two space-separated integers: n,m (1<=n<=105,2<=m<=105)n,m\ (1<=n<=10^{5},2<=m<=10^{5}) — the number of people and floors in the building, correspondingly.

Next nn lines each contain three space-separated integers: ti,si,fi (1<=ti<=109,1<=si,fi<=m,sifi)t_{i},s_{i},f_{i}\ (1<=t_{i}<=10^{9},1<=s_{i},f_{i}<=m,s_{i}≠f_{i}) — the time when the ii -th person begins waiting for the elevator, the floor number, where the ii -th person was initially located, and the number of the floor, where he wants to go.

输出格式

Print nn lines. In the ii -th line print a single number — the moment of time, when the ii -th person gets to the floor he needs. The people are numbered in the order, in which they are given in the input.

Please don't use the %lld specifier to read or write 64-bit integers in С++. It is preferred to use the cin, cout streams or the %I64d specifier.

输入输出样例

  • 输入#1

    3 10
    1 2 7
    3 6 5
    3 4 8
    

    输出#1

    7
    11
    8
    
  • 输入#2

    2 10
    1 2 5
    7 4 5
    

    输出#2

    5
    9
    

说明/提示

In the first sample the elevator worked as follows:

  • t=1t=1 . The elevator is on the floor number 11 . The elevator is empty. The floor number 22 has one person waiting. pup=1+0=1,pdown=0+0=0,pup>=pdownp_{up}=1+0=1,p_{down}=0+0=0,p_{up}>=p_{down} . So the elevator goes to the floor number 22 .
  • t=2t=2 . The elevator is on the floor number 22 . One person enters the elevator, he wants to go to the floor number 77 . pup=0+1=1,pdown=0+0=0,pup>=pdownp_{up}=0+1=1,p_{down}=0+0=0,p_{up}>=p_{down} . So the elevator goes to the floor number 33 .
  • t=3t=3 . The elevator is on the floor number 33 . There is one person in the elevator, he wants to go to floor 77 . The floors number 44 and 66 have two people waiting for the elevator. pup=2+1=3,pdown=0+0=0,pup>=pdownp_{up}=2+1=3,p_{down}=0+0=0,p_{up}>=p_{down} . So the elevator goes to the floor number 44 .
  • t=4t=4 . The elevator is on the floor number 44 . There is one person in the elevator who wants to go to the floor number 77 . One person goes into the elevator, he wants to get to the floor number 88 . The floor number 66 has one man waiting. pup=1+2=3,pdown=0+0=0,pup>=pdownp_{up}=1+2=3,p_{down}=0+0=0,p_{up}>=p_{down} . So the elevator goes to the floor number 55 .
  • t=5t=5 . The elevator is on the floor number 55 . There are two people in the elevator, they want to get to the floors number 77 and 88 , correspondingly. There is one person waiting for the elevator on the floor number 66 . pup=1+2=3,pdown=0+0=0,pup>=pdownp_{up}=1+2=3,p_{down}=0+0=0,p_{up}>=p_{down} . So the elevator goes to the floor number 66 .
  • t=6t=6 . The elevator is on the floor number 66 . There are two people in the elevator, they want to get to the floors number 77 and 88 , correspondingly. One man enters the elevator, he wants to get to the floor number 55 . pup=0+2=2,pdown=0+1=1,pup>=pdownp_{up}=0+2=2,p_{down}=0+1=1,p_{up}>=p_{down} . So the elevator goes to the floor number 77 .
  • t=7t=7 . The elevator is on the floor number 77 . One person leaves the elevator, this person wanted to get to the floor number 77 . There are two people in the elevator, they want to get to the floors with numbers 88 and 55 , correspondingly. pup=0+1=1,pdown=0+1=1,pup>=pdownp_{up}=0+1=1,p_{down}=0+1=1,p_{up}>=p_{down} . So the elevator goes to the floor number 88 .
  • t=8t=8 . The elevator is on the floor number 88 . One person leaves the elevator, this person wanted to go to the floor number 88 . There is one person in the elevator, he wants to go to the floor number 55 . pup=0+0=0,pdown=0+1=1,pup<pdownp_{up}=0+0=0,p_{down}=0+1=1,p_{up}<p_{down} . So the elevator goes to the floor number 77 .
  • t=9t=9 . The elevator is on the floor number 77 . There is one person in the elevator, this person wants to get to the floor number 55 . pup=0+0=0,pdown=0+1=1,pup<pdownp_{up}=0+0=0,p_{down}=0+1=1,p_{up}<p_{down} . So the elevator goes to the floor number 66 .
  • t=10t=10 . The elevator is on the floor number 66 . There is one person in the elevator, he wants to get to the floor number 55 . pup=0+0=0,pdown=0+1=1,pup<pdownp_{up}=0+0=0,p_{down}=0+1=1,p_{up}<p_{down} . So the elevator goes to the floor number 55 .
  • t=11t=11 . The elevator is on the floor number 55 . One person leaves the elevator, this person initially wanted to get to the floor number 55 . The elevator is empty and nobody needs it, so the elevator remains at the floor number 55 .
首页