(ฉันตั้งใจจะโพสต์สิ่งนี้ในขณะที่1542: ความขัดแย้งของการกำหนดเวลา ยังคงเป็น xkcd ปัจจุบัน แต่ฉันมีความขัดแย้งของการตั้งเวลา)
อินพุต
การป้อนข้อมูลจะเป็นรายการ3n
องค์ประกอบซึ่งเป็นตัวแทนของn
เหตุการณ์ องค์ประกอบแรกในแต่ละกลุ่มของ 3 จะเป็นชื่อของเหตุการณ์ ครั้งที่สองและสามคือเวลาเริ่มต้นและสิ้นสุดตามลำดับ ตัวอย่างเช่น:
foo 12 34 bar 56 78
แสดงถึงเหตุการณ์foo
ที่เริ่มต้นที่ "เวลา 12" (เวลาถูกแทนด้วยจำนวนเต็มคุณสามารถคิดว่ามันเป็นนาทีที่ผ่านเที่ยงคืน) และสิ้นสุดที่ 34 และเหตุการณ์ที่สองbar
ที่เริ่มต้นที่ 56 และสิ้นสุดที่ 78
ชื่อของเหตุการณ์จะประกอบด้วยตัวอักษรและตัวเลขเท่านั้นและเวลาจะเป็นจำนวนเต็มเสมอ≥ 0 และ <1440 เวลาสิ้นสุดจะต้องมากกว่า 1 เวลาเริ่มต้นอย่างน้อย 1 เสมอ พวกเขาจะไม่รับประกันว่าจะเรียงในทางใดทางหนึ่ง
หากคุณต้องการคุณอาจใช้สิ่งนี้เป็นสตริงที่คั่นด้วยช่องว่างเดียว; ไม่เช่นนั้นควรใช้เป็นอาร์เรย์รายการเวกเตอร์หรือภาษาที่เทียบเท่าของคุณ
เอาท์พุต
เอาต์พุตควรเป็นรายการชื่อเหตุการณ์ที่คั่นด้วยช่องว่าง กฎสำหรับชื่อเหตุการณ์ที่จะส่งออกมีดังนี้:
ไม่มีเหตุการณ์ที่คุณส่งออกอาจขัดแย้งซึ่งกันและกัน ตัวอย่างเช่นด้วยอินพุต
a 0 10 b 5 15
คุณไม่สามารถส่งออกทั้งสองa
และb
เนื่องจากเวลาที่ขัดแย้งกัน (นั่นคือทับซ้อนบางส่วน) หากกิจกรรมสิ้นสุดลงเมื่อเริ่มอีกเหตุการณ์หนึ่งคุณอาจรวมทั้งสองเหตุการณ์คุณอาจจะไม่ได้ผลผลิตเหตุการณ์ที่เรียกว่า
NSCC
( "การจัดตารางการแข่งขันความขัดแย้งแห่งชาติ") ซึ่งจะมีเสมอจะตรงหนึ่งในการป้อนข้อมูล คุณต้องแสดงผลลัพธ์อย่างน้อยหนึ่งเหตุการณ์ที่ขัดแย้งกัน (ทับซ้อนบางส่วน) กับNSCC
(และจะต้องมีอย่างน้อยหนึ่งเหตุการณ์เช่นกัน)คุณต้องส่งออกเหตุการณ์ให้ได้มากที่สุดเท่าที่จะทำได้ในขณะที่ทำตามกฎสองข้อ (นี่คือสิ่งที่ทำให้คุณดูยุ่งที่สุดเท่าที่จะทำได้เพื่อให้ NSCC ที่หายไปดูน่าเชื่อถือยิ่งขึ้น)
สิ่งนี้อาจถูกส่งออกเป็นสตริงที่คั่นด้วยช่องว่างเดียวหรืออาร์เรย์รายการเวกเตอร์ ฯลฯ
สามารถมีเอาต์พุตที่เป็นไปได้มากกว่าหนึ่งรายการ
กรณีทดสอบ
โปรดทราบว่าผลลัพธ์ที่แสดงเป็นตัวอย่างเท่านั้น รหัสของคุณอาจมีอะไรบางอย่างที่แตกต่างออกไปตราบใดที่มันยังคงเป็นไปตามกฎทั้งสามข้อด้านบน (โดยเฉพาะอย่างยิ่งนี่หมายความว่าจะต้องมีจำนวนเหตุการณ์เท่ากับตัวอย่าง)
เข้า: UnderwaterBasketWeavingConvention 50 800 NSCC 500 550
ออก:UnderwaterBasketWeavingConvention
เข้า: SconeEating 0 50 RegexSubbing 45 110 CodeGolfing 95 105 NSCC 100 200
ออก:SconeEating CodeGolfing
เข้า: VelociraptorHunting 0 300 NerdSniping 200 500 SEChatting 400 700 DoorknobTurning 650 750 NSCC 725 775
ออก:NerdSniping DoorknobTurning
เข้า: NSCC 110 115 A 100 120 B 120 140 C 105 135 D 100 105 E 135 500
ออก:C D E
เข้า: A 800 900 NSCC 700 1000 B 650 750 C 950 1050 D 655 660 E 660 665 F 1030 1040 G 1040 1060
ออก:A D E F G
เข้า: A 10 11 B 11 12 C 12 13 D 13 14 NSCC 15 1090 E 10 16
ออก:E
รู้สึกอิสระที่จะเพิ่มกรณีทดสอบเพิ่มเติมในการแก้ไขหากมีกรณีขอบที่ฉันพลาด
กฎระเบียบ
รหัสของคุณจะต้องเสร็จสมบูรณ์ภายใน 30 วินาทีสำหรับกรณีทดสอบทั้งหมดที่ให้ไว้ (นี่เป็นการตรวจสุขภาพที่ดีกว่าเพราะมันน่าจะเสร็จเร็วขึ้นมากสำหรับกรณีทดสอบทั้งหมดรวมกัน) ในเครื่องส่วนบุคคลที่สมเหตุสมผล
นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดในหน่วยไบต์ชนะ
underwaterBasketWeavingConvention 50 800 nscc 550
แทนตัวอย่างของคุณ?