Baltic OI '15 P6 - Tug of War

View as PDF

Points: 20 (partial)
Time limit: 1.0s
Java 2.0s
Memory limit: 256M

Problem type
Baltic Olympiad in Informatics: 2015 Day 2, Problem 3

Tug of war is a very popular sport in Byteland. The rules are easy: two teams pull a rope in opposite directions. The annual Byteland tug of war charity is taking place, and a lot of contestants have signed up. As the fair play commissioner, your job is to divide the contestants into two teams, such that the game can go on for a long time.

Since a total of contestants have signed up, each team will consist of contestants. The rope has spots on the left side and spots on the right side. The tug of war elite of Byteland are a picky bunch: each contestant has exactly one spot on the left side of the rope and one spot on the right side that he or she wants to use. Furthermore, you know the strength of each contestant.

The organizer has now asked you the following: Given an integer , is it possible to create two teams, such that each team has contestants, each contestant uses a spot that he or she wants to use (of course no two contestants share a spot), and the sums of strengths of the two teams differ by at most ?

Input Specification

The first line of input contains a positive integer , specifying the number of spots on each side of the rope, and an integer , specifying the maximum difference of teams' strengths. For simplicity, we number the contestants from to . Each of the following lines describes one contestant: the -th of these lines contains three positive integers and , which specify that contestant has strength and wants to use either spot on the left side of the rope or spot on the right side of the rope.

Output Specification

In the first and only line of output your program should write either YES or NO, depending on whether it is possible to create two teams satisfying the requirements stated above.

1
2
3
4

Sample Input 1

4 1
1 1 1
2 1 2
2 2 8
1 2 2
3 3 5
3 3 2
4 4 1
4 4 2

Sample Output 1

YES

Explanation for Sample 1

In the first example we can assign contestants and to the left side (which results in a team of strength ) and contestants and to the right side (which results in a team of strength ). The difference of strengths between teams is .

Sample Input 2

2 5
1 1 1
1 2 4
2 2 1
2 1 4

Sample Output 2

NO

Explanation for Sample 2

In the second example both players of strength have to be in the same team, thus the minimal difference of strengths between teams is .