An Animal Contest 1 P2 - Alpaca Racing

View as PDF

Submit solution

Points: 5 (partial)
Time limit: 0.6s
Python 1.5s
Memory limit: 256M

Problem types

You have decided to enter your alpaca into the annual Alpaca Racing Tournament! The race will be run around a track of length D, and you will be competing against N other alpacas. However, your alpaca is running slower than usual because it ate too many cheetos got injured while training for the race. Desperate to win, you hack into the tournament software containing the speeds of all alpacas to see if there is a chance of victory. The speed of the i^{th} alpaca is defined as a_i, and your alpaca has speed P. Soon, you realize that you have no chance of winning, but you have one more trick up your sleeve. You create a device that can reduce the speed of any alpaca, setting its new speed to \left\lfloor{\text{speed}\times\frac{100-X}{100}}\right\rfloor. However, due to a bug in the device, it can only be used K times. Your task is to find out if you can win if you use the device at most K times. Note that winning means that you finish in the fastest time, meaning no ties.


For all subtasks:

1 \le N,K \le 10^6

1 \le D, P, a_i \le 10^{16}

1 \le X \le 100

Subtask 1 [10%]

X = 100

Subtask 2 [90%]

No additional constraints.

Input Specification

The first line of input will contain 4 integers N,D,K,X, all separated by a space.

The next N lines will each contain a_i, denoting the speed of the i^{th} alpaca.

The final line of input will contain P, denoting the speed of your alpaca.

Output Specification

You are to output YES if you can win the race outright after using the device at most K times and NO otherwise.

Note: For this problem, you will NOT be required to pass the sample cases in order to receive points. In addition, you must pass all previous subtasks to earn points for a specific subtask.

Sample Input 1

2 12 3 30

Sample Output 1


Explanation for Sample Output 1

The first alpaca finishes in 12/100 = 0.12 hours, the second one finishes in 12/50 = 0.24 hours and you finish in 12/50 = 0.24 hours.

You use the device on the first alpaca twice, bringing his speed down to \lfloor{100\times\frac{100-30}{100}}\rfloor = 70, then \lfloor{70\times\frac{100-30}{100}}\rfloor = 49. The first alpaca now finishes in 12/49=0.245 hours, which is slower than you. You also need to use the device once on the second alpaca. Using the device 3 times allows you to win.

Sample Input 2

4 200 1 1

Sample Output 2



  • 0
    bluej  commented on Sept. 11, 2021, 10:14 p.m.

    Can someone please tell me what is wrong with my code? Thanks a lot for the help.

  • 0
    Tempest_Enderman  commented on Sept. 2, 2021, 7:46 a.m. edited


    • 2
      Tony1234  commented on Sept. 2, 2021, 8:46 a.m.

      go ask that question to DMOPC

  • 1
    ErtYy  commented on Aug. 13, 2021, 12:10 a.m. edit 2

    can anyone tell me why my code gives wa on case 3 batch 2

  • 5
    Xiang_li  commented on July 6, 2021, 9:03 p.m.

    I'm confused as to why D in two restrictions (1<=D<=10^6)&&(1<=D<=10^16) and why it's in the question?

    • 4
      Tony1234  commented on July 6, 2021, 9:30 p.m.

      Fixed 🐒

  • 0
    Genius3435  commented on May 7, 2021, 12:40 a.m.

    Also, you seem to need Fast I/O in C++ to get it to work, because of the N \leq 10^6 constraint and 0.6s time limit.

  • 8
    Badmode  commented on April 12, 2021, 10:40 p.m. edit 4

    When changing the speed another alpaca, remember to floor the alpaca's speed to pass batch #2 test case #7.

    Also, Java users should use long integers, and c++ users should use long long integers to prevent integer overflow to pass batch #2 test case #1.

    • 1
      wozhenshuai  commented on April 13, 2021, 1:48 a.m.

      yeah I failed on the first try because I was too rushed at the time and forgot to floor.