กติกาการแข่งขัน

กติกานี้อาจเปลี่ยนแปลงได้ อย่างไรก็ตามกติกาฉบับจริงจะประกาศก่อนวันแข่ง ผู้สนใจสามารถติดตามได้ที่นี่

  1. การแข่งขันใช้เวลา 3 ชั่วโมง โดยมีโจทย์ประมาณ 3-4 ข้อ รูปแบบโจทย์โดยทั่วไปจะมีลักษณะเป็น Batch หรือไม่ก็ Interactive (อ่านเพิ่มเติมได้ที่หน้าข้อมูลการแข่งขันคอมพิวเตอร์โอลิมปิกนานาชาติ) ผู้เข้าแข่งขันจะต้องเขียนโปรแกรมที่แก้ปัญหาตามที่ระบุในโจทย์
    (ผู้เข้าแข่งขันสามารถดูตัวอย่างของโจทย์เก่าได้ในระบบตรวจโปรแกรมเมื่อลงทะเบียนแล้ว)
  2. ในระหว่างการแข่งขัน ผู้เข้าแข่งขันสามารถส่งโปรแกรมคำตอบได้หลายครั้ง โปรแกรมที่ผู้เข้าแข่งขันส่งจะได้รับการตรวจกับข้อมูลชุดทดสอบตัวอย่าง (ตามที่ปรากฏในโจทย์) เท่านั้น ซึ่งผู้เข้าแข่งขันจะไม่ได้คะแนนจากการทดสอบกับชุดข้อมูลทดสอบตัวอย่างแต่อย่างใด
  3. เมื่อการแข่งขันสิ้นสุดลง โปรแกรมสุดท้ายที่ส่งสำหรับโจทย์แต่ละข้อ จะถูกนำไปตรวจกับข้อมูลชุดทดสอบจริงอีกครั้งเพื่อคิดคะแนน ผู้เข้าแข่งขันจะได้คะแนนจากโปรแกรมที่ให้ผลลัพธ์ถูกต้องโดยใช้เวลาและทรัพยาการ (หน่วยความจำ) ไม่เกินที่โจทย์กำหนด
  4. ในบางกรณี (ซึ่งโจทย์จะระบุไว้อย่างชัดเจน) โจทย์อาจกำหนดให้ระหว่างการแข่งขัน โปรแกรมของผู้เข้าแข่งขันจะได้ตรวจกับชุดข้อมูลทดสอบจริง โดยแบ่งเป็น 2 ประเภทคือ

    Partial Feedback
    ระบบจะทำการตรวจโปรแกรมกับชุดข้อมูลทดสอบตัวอย่างและบางส่วนของชุดข้อมูลทดสอบจริงทันที เมื่อผู้เข้าแข่งขันส่งโปรแกรมระหว่างการแข่งขัน ดังนั้นผู้เข้าแข่งขันจะทราบแนวโน้มความถูกต้องของโปรแกรมและเวลาที่ใช้รันโปรแกรม
    Complete Feedback
    ระบบจะทำการตรวจโปรแกรมกับชุดข้อมูลทดสอบจริงทั้งหมด เมื่อผู้เข้าแข่งขันส่งโปรแกรมระหว่างการแข่งขัน ดังนั้นคะแนนที่ปรากฏระหว่างการแข่งขันคือคะแนนจริงที่ผู้เข้าแข่งขันได้ในขณะนั้น
  5. ภาษาที่ใช้ในการแข่งขันคือภาษา C, C++ หรือ Pascal โดยผู้เข้าแข่งขันจะส่งโค้ดของโปรแกรมที่ระบบตรวจคำตอบ โปรแกรมที่ส่งจะต้องมีขนาดไม่เกินที่กำหนด (เช่น 200KB)

  6. สภาพแวดล้อมของระบบตรวจคือ
    CPU: Intel Xeon 2.4 GHz
    OS: Linux Debian 4.0 บน Linux Kernel 2.6.18
    Compiler: gcc version 4.1.2, g++ version 4.1.2, free pascal version 2.2.0
  7. ผู้เข้าแข่งขันแม้จะไม่ได้ทำงานบนระบบปฏิบัติการ Linux ก็สามารถส่งโปรแกรมได้ โดยใช้คอมไพเลอร์ภาษา C หรือ C++ มาตรฐานทั่วไป เนื่องจากข้อมูลป้อนเข้ามีขนาดใหญ่ จึงไม่สนับสนุนให้ใช้ Turbo C (รุ่นที่ทำงานบน DOS) ระบบพัฒนาโปรแกรมอื่น ๆ บน MS Windows ที่สามารถใช้แทนได้ เช่น
    Bloodshed Dev-C++
    Code::Blocks
    MS Visual C++ Express Edition
  8. ผู้เข้าแข่งขันสามารถทดสอบโปรแกรมที่ส่งกับข้อมูลชุดทดสอบที่ผู้เข้าแข่งขันสร้างขึ้นเอง ภายใต้สภาพแวดล้อมของเครื่องตรวจได้ โดยเลือกหน้า “ทดสอบ” ของระบบแข่งขัน
  9. หากพบผู้เข้าแข่งขันที่ทุจริต (เช่น ช่วยกันทำหลายคน ส่งโปรแกรมอื่น ๆ ที่ไม่ได้มีเป้าหมายเพื่อแก้โจทย์ พยายามเจาะเข้าระบบ) จะไม่ทำการตรวจโปรแกรมให้และอาจถูกตัดสิทธิ์การเข้าร่วมในการแข่งขันครั้งต่อ ๆ ไป