IOI '09 - Plovdiv, Bulgaria
The traveling salesman has decided that optimally scheduling his trips
on land is an intractable computational problem, so he is moving his
business to the linear world of the Danube River. He has a very fast
boat that can get him from anywhere to anywhere along the river in no
time, but unfortunately the boat has terrible fuel consumption. It costs
the salesman dollars for every meter traveled upstream (towards the
source of the river) and
dollars for every meter traveled downstream
(away from the source of the river).
There are trade fairs that the salesman would like to visit along
the river. Each trade fair is held for one day only. For each trade fair
, the traveling salesman knows its date
, measured in the
number of days since he purchased his boat. He also knows the fair's
location
, measured as the distance in meters from the source of
the river downstream to the fair, as well as the number of dollars
that the salesman is going to gain if he attends this trade
fair. He has to start and end his journey at his waterfront home on the
river, which is at location
, measured also in meters downstream from
the source of the river.
Help the traveling salesman choose which trade fairs to attend (if any) and in what order, so that he may maximize his profit at the end of his travels. The traveling salesman's total profit is defined as the sum of the dollars he gained at the fairs he attended, minus the total sum of dollars he spent traveling up and down the river.
Keep in mind that if trade fair is held earlier than trade fair
,
the salesman can visit them only in this order (i.e., he cannot visit
and then visit
). However, if two fairs are held on the same date, the
salesman can visit them both in any order. There is no limit to how many
fairs the salesman can visit in a day, but naturally he can't visit the
same fair twice and reap the gains twice. He can pass through fairs he
has already visited without gaining anything.
Write a program that, given the date, location and profitability of all fairs, as well as the location of the traveling salesman's home and his costs of traveling, determines the maximum possible profit he can make by the end of his journey.
Input Specification
Your program must read from standard input the following data:
- The first line contains the integers
,
,
, and
, in this order, separated by single spaces.
- The next
lines describe the
fairs in no particular order. The
of these
lines describes the
fair and contains three integers separated by single spaces: the day of the fair
, its location
, and its profitability for the salesman
.
NOTE: All locations given in the input will be different. That is to say, no two fairs will happen at the same location and no fair will happen at the salesman's home.
Output Specification
Your program must write to standard output a single line containing a single integer: the maximum profit the salesman can possibly make by the end of his journey.
Sample Input
4 5 3 100
2 80 100
20 125 130
10 75 150
5 120 110
Sample Output
50
Explanation
An optimal schedule would visit fairs and
(the ones at locations
and
). The sequence of events and their associated profits and costs
would be as follows:
- The salesman travels
meters upstream at a cost of
dollars. Profit so far:
- He attends fair number
and earns
. Profit so far:
- He travels
meters upstream at a cost of
. Profit so far:
- He attends fair number
where he earns
. Profit so far:
- He travels
meters downstream to return home at a cost of
. Profit at the end:
Note on grading
For a number of tests, worth a total of points, no two fairs will be
held on the same day.
For a number of tests, worth a total of points, none of the numbers
in the input will exceed
.
The tests where both of the above conditions hold are worth points.
The tests where at least one of the two conditions holds are worth
points.
Comments