เรื่องราว
"2016? Al .right," ผู้ขายของเล่นบ่นฮิลแบร์ต เขาเปิดตาของเขาเช็ดน้ำสลัดไหลออกมาจากหูของเขาและกิน cremeschnitte เริ่มเตะตอนเช้า แบบอย่างวันหยุด เขาต้องไปทำงานตอนนี้และทำบัญชีให้เสร็จในปีนี้
คริสมาสต์เป็นช่วงเวลาที่ให้ผลผลิตอย่างมากของปีโดยเฉพาะอย่างยิ่งสำหรับการขายของเขา ฮิลแบร์ตรู้ดีว่ามันทำงานอย่างไร: คนเข้ามาในร้านและซื้อของขวัญชิ้นแรกที่พวกเขาเสนอ พวกเขาจ่ายเงินและวิ่งไปที่ร้านอื่น ในทางปฏิบัติสิ่งที่เป็นจริงของขวัญไม่ได้สร้างความแตกต่าง ราคายังไม่เกี่ยวข้องด้วยหากไม่สูงเกินไป ทุกอย่างขึ้นอยู่กับเวลาที่เหลือจนถึงวันคริสต์มาส - เวลาที่สั้นกว่ายิ่งลูกค้าสำนึกผิดมากเท่าไหร่ราคาก็เต็มใจจ่ายมากขึ้นเท่านั้น
สิ่งที่ต้องทำสำหรับฮิลแบร์ตก็คือดูนาฬิกาของเขา - และเขารู้ทันทีว่าลูกค้าของเขาสามารถใช้จ่ายได้เท่าใด เขาสามารถใช้ประโยชน์จากความจริงข้อนี้ได้อย่างง่ายดายเขาเพียงแค่หาของกำนัลที่แพงที่สุดที่เขาสามารถขายให้กับลูกค้าคนหนึ่งและมอบให้กับพวกเขา ตอนนี้เขารู้แล้วว่าเขาลืมที่จะใช้กลยุทธ์อันชาญฉลาดนี้เมื่อปีที่แล้ว ที่จะเปลี่ยนแม้ว่า!
อย่างไรก็ตามฮิลแบร์ตต้องการทราบว่าธุรกิจของเขาจะรุ่งเรืองเพียงใดหากเขาใช้รูปแบบที่ยิ่งใหญ่ของเขา เขาสามารถรวบรวมรายชื่อผู้คนที่มาที่ร้านค้าของเขาได้ แต่เขาไม่แน่ใจว่าเขาสามารถทำเงินได้มากแค่ไหน
งานของคุณ (TL; DR)
ข้อมูลที่ป้อนประกอบด้วยรายการของของขวัญที่มีราคาจากน้อยไปหามากและรายการงบประมาณของลูกค้า รายการงบประมาณอยู่ในลำดับเดียวกับที่ลูกค้ามาถึงร้านค้าโดยมีเงื่อนไขว่าลูกค้าทุกคนยินดีที่จะจ่ายอย่างน้อยเท่า ๆ กับรายการก่อนหน้าซึ่งหมายความว่ามันขึ้นไป
สำหรับลูกค้าแต่ละรายให้หาของกำนัลที่แพงที่สุดที่พวกเขาเต็มใจจ่ายและส่งออกราคาของมัน 0หากไม่มีของขวัญภายในงบประมาณที่มีการส่งออก
คุณจะได้รับ-40%โบนัสตัวละครหากความซับซ้อนของเวลาแบบอะซิมโทติคของอัลกอริทึมของคุณคือO(n+m)(แทนที่จะเป็นเรื่องเล็กน้อยO(n*m)) ความยาวของรายการอินพุตอยู่ที่ไหนn, m
นี่คือcode-golfไบต์ที่สั้นที่สุดชนะ ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
ตัวอย่าง
การป้อนข้อมูล:
1 2 2 2 5 7 10 20
1 1 2 3 6 6 15 21 21 22
เอาท์พุท:
1 0 2 2 5 2 10 20 7 0
งานนี้นำมาจากการแข่งขันเขียนโปรแกรมท้องถิ่นและแปลเป็นภาษาอังกฤษโดยฉัน นี่คือการมอบหมายดั้งเดิม: https://www.ksp.sk/ulohy/zadania/1131/