01418232 Algorithm Design and Analysis 2553: blood donation

ช่วงสงกรานต์เป็นช่วงที่มีอุบัติเหตุมากที่สุดของปีและในปีนี้ทางกาชาดจังหวัดเชียงใหม่ก็หวั่นว่าจะมีเลือดไม่เพียงพอ ที่จะรองรับผู้บาดเจ็บ ทางกาชาดจึงต้องการจะรู้ว่าเลือดที่มีอยู่นั้นเพียงพอหรือไม่

การบริจาคเลือดจะมีกฎดังนี้ เลือดในคนมีอยู่ 4 กรุ๊ป คือ A, B, AB, O และ
 * ผู้บาดเจ็บที่มีเลือดกรุ๊ป A จะรับเลือดได้แค่กรุ๊ป A และ O เท่านั้น
 * ผู้บาดเจ็บที่มีเลือดกรุ๊ป B จะรับเลือดได้แค่กรุ๊ป B และ O เท่านั้น
 * ผู้บาดเจ็บที่มีเลือดกรุ๊ป O จะรับเลือดได้แค่กรุ๊ป O เท่านั้น
 * ผู้บาดเจ็บที่มีเลือดกรุ๊ป AB จะรับเลือดได้ทุกกรุ๊ป

ถ้าในขณะนี้กาชาดเชียงใหม่มีเลือดอยู่ในครอบครอง (supply) ตามกรุ๊ปเลือดดังนี้ sA, sB, sAB, sO และจากสถิติจำนวน ผู้บาดเจ็บปีที่แล้วทางกาชาดได้มีตัวเลขคร่าวๆแล้วว่าปีนี้มีผู้ป่วยที่ต้องการเลือด (demand) แบ่งตามกรุ๊ปเลือดของผู้ป่วยได้ดังนี้ dA, dB, dAB, dO

ในข้อนี้ ได้กำหนดจำนวนเลือดทั้งหมดที่มีจะมีจำนวนมากกว่าความต้องการ แต่เพราะกฎการบริจาคจะทำให้เกิดความไม่เพียงพอในการให้เลือด

จงเขียนโปรแกรมเพื่อหาว่า จะมีจำนวนผู้ป่วยกี่คนที่จะได้รับเลือดที่ต้องการ โดยการแปลงปัญหานี้ให้เป็นปัญหา maximum flow และใช้โปรแกรมในข้อ maxflow มาช่วยแก้ปัญหา

ข้อกำหนด : ต้องใช้ max flow ในการแก้ปัญหาเท่านั้น ถ้าเขียนโปรแกรมโดยเช็คเงื่อนไขปกติจะไม่ได้คะแนนค่ะ

ข้อมูลเข้า
มีอยู่ 4 บรรทัด โดยที่
 * บรรทัดที่ 1 มี 2 ค่า คือ sA dA โดยที่ sA แสดงถึงเลือดกรุ๊ป A ที่กาชาดมี และ dA แสดงถึงจำนวนผู้ป่วยที่มีเลือดกรุ๊ป A
 * บรรทัดที่ 2 มี 2 ค่า คือ sB dB โดยที่ sB แสดงถึงเลือดกรุ๊ป B ที่กาชาดมี และ dB แสดงถึงจำนวนผู้ป่วยที่มีเลือดกรุ๊ป B
 * บรรทัดที่ 3 มี 2 ค่า คือ sAB dAB โดยที่ sAB แสดงถึงเลือดกรุ๊ป AB ที่กาชาดมี และ dAB แสดงถึงจำนวนผู้ป่วยที่มีเลือดกรุ๊ป AB
 * บรรทัดที่ 4 มี 2 ค่า คือ sO dO โดยที่ sO แสดงถึงเลือดกรุ๊ป O ที่กาชาดมี และ dO แสดงถึงจำนวนผู้ป่วยที่มีเลือดกรุ๊ป O

ข้อมูลออก
มีอยู่ 1 บรรทัด เป็นจำนวนผู้ป่วยที่จะได้รับเลือด

ตัวอย่าง 1
ทางกาชาดมีเลือดกรุ๊ป A จำนวน 2 ลิตร กรุ๊ป B จำนวน 7 ลิตร กรุ๊ป AB จำนวน 5 ลิตร และกรุ๊ป O จำนวน 6 ลิตร และมีผู้ป่วยกรุ๊ป A จำนวน 7 คน กรุ๊ป B จำนวน 3 คน กรุ๊ป AB จำนวน 4 คน และกรุ๊ป O จำนวน 3 คน

จะเห็นว่า กาชาดมีทั้งหมด 20 ลิตร และมีความต้องการทั้งหมด 17 คน (หมายถึงต้องการ 17 ลิตร) แต่เพราะกฎการให้เลือดทำให้ไม่เพียงพอ และรองรับผู้ป่วยได้แค่ 15 คนเท่านั้น กล่าวคือ ดังนั้นทั้งหมดได้ 3 + 4 + 3 + 5 = 15 คน
 * เลือดกรุ๊ป O 3 คนต้องใช้เลือดกรุ๊ป O เท่านั้นและกาชาดมีถึง 6 ลิตร ดังนั้นจึงเพียงพอ และเหลือให้เลือดกรุ๊ปอื่นด้วย
 * เลือดกรุ๊ป AB 4 คนก็ใช้กรุ๊ป AB เลยได้
 * เลือดกรุ็ป B 3 คนก็ได้รับกรุ๊ป B ที่กาชาดมีทั้งหมด
 * ส่วนเลือดกรุ๊ป A จะได้กรุ๊ป A 2 คน และได้จากกรุ๊ป O อีก 3 แต่ยังไม่ครบ 7 คน

หมายเหตุ จริงๆแล้ว การให้เลือดอาจเป็นกรุ๊ป A ได้ครบ 7 คนแต่กรุ๊ป O ได้แค่ 1 คนเท่านั้น แต่รวมกันก็ยังเป็น 15 คนเท่ากัน

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