01418232 Algorithm Design and Analysis 2553: Knapsack

จงเขียนโปรแกรมเพื่อแก้ปัญหา knapsack ตามเนื้อหาที่สอนในห้อง แต่มีการประยุกต์นิดหน่อย กล่าวคือ

มีห้างสรรพสินค้าห้างหนึ่งได้จัดโปรโมชั่นให้ลูกค้า ซึ่งลูกค้าต้องจ่ายเงินเป็นจำนวน x บาทเพื่อเข้าร่วมโปรโมชั่นนี้ รายละเอียดโปรโมชั่นมีดังนี้ ทางห้างจะแจกถุงขนาด W กิโลกรัม เพื่อให้ลูกค้าสามารถเลือกสินค้ามาใส่ถุงนี้ได้โดยที่ น้ำหนักรวมของสินค้าในถุงต้องไม่เกิน W กิโลกรัม ห้างสรรพสินค้าห้างนี้จะมีสินค้าอยู่ n ชิ้น โดยที่สินค้าชิ้นที่ i จะมีมูลค่า vi บาท และมีน้ำหนัก wi กิโลกรัม เป้าหมายของคุณคือ ต้องเลือกสินค้ามาใส่ในถุงเพิ่อให้มูลค่ามากที่สุดและนั้นหนักรวมไม่เกิน W กิโลกรัม

จงเขียนโปรแกรมเพื่อหาว่า ด้วยข้อกำหนดของโปรโมชั่นที่ให้ โปรโมชั่นนี้จะคุ้มกับการจ่ายเงิน x บาทหรือไม่

ข้อมูลเข้า

 * บรรทัดแรกมีจำนวนเต็ม n (1 <= n <= 100) หมายความถึงจำนวนของสินค้า
 * บรรทัดต่อไปมีจำนวนเต็ม W (1 <= W <= 10,000) เป็นขนาดของถุง
 * บรรทัดที่สองมีจำนวนเต็ม x (1 <= x <= 1,000,000) เป็นเงินที่ต้องจ่ายเพื่อเข้าร่วมโปรโมชั่น
 * อีก n บรรทัดจะมี 2 ค่า คือ vi wi โดยที่ vi เป็นมูลค่าของสินค้าที่ i และ wi เป็นน้ำหนักของสินค้าที่ i โดยที่ 1 <= vi <= 10,000 และ 1 <= wi <= 10,000

ข้อมูลออก
มีอยู่ 2 บรรทัด โดยที่
 * บรรทัดที่ 1 เป็นได้ 2 ค่าคือ YES แสดงถึงโปรโมชั่นนี้คุ้ม และ NO หมายถึงไม่คุ้ม
 * บรรทัดที่ 2 เป็นตัวเลขจำนวนเต็ม แสดงถึง มูลค่าที่มากที่สุดที่ลูกค้าจะได้จากโปรโมชั่นนี้

ตัวอย่าง
เหมือนกับในสไลด์ และลองรัน test case เพิ่มเติมได้ที่นี่ ( input | output) - ควรคลิกขวาแล้ว save as ไฟล์ .txt ค่ะ

ข้อกำหนด
โปรแกรมของคุณต้องหยุดการทำงานภายในเวลา 1 วินาที และใช้หน่วยความจำไม่เกิน 16 MB