TWO TRANSPORTATIONS - TỆP MẪU

Nộp một tệp C++ cài đặt cả Azer và Baijan, dùng:

    #include "transportations.h"

Tệp transportations.cpp trong gói này là mã mẫu để thay bằng lời giải của bạn,
không phải lời giải đúng. Không cài đặt main, SendA hoặc SendB.

Các hàm cần cài đặt giữ nguyên chữ ký của đề chính thức:

void InitA(int N, int A, std::vector<int> U, std::vector<int> V,
           std::vector<int> C);
void ReceiveA(bool x);
std::vector<int> Answer();
void InitB(int N, int B, std::vector<int> S, std::vector<int> T,
           std::vector<int> D);
void ReceiveB(bool y);

Thư viện cung cấp void SendA(bool y); và void SendB(bool x);.

Đề gốc dùng hai tệp Azer.cpp và Baijan.cpp cùng các tiêu đề Azer.h, Baijan.h.
Ở đây, hai phần được nộp trong một tệp, với tiêu đề chung transportations.h.
Nếu các biến hoặc hàm phụ của hai phần trùng tên, dùng hai namespace khác nhau
và giữ các hàm giao diện ở phạm vi toàn cục. Đặt mọi #include ngoài namespace.

Khi chấm, cùng tệp thực thi được chạy thành hai tiến trình cách ly. Một tiến
trình chỉ nhận các cạnh đường sắt và chạy phần Azer; tiến trình còn lại chỉ
nhận các cạnh xe buýt và chạy phần Baijan. Không chia sẻ biến toàn cục giữa
hai tiến trình. Thứ tự khởi tạo, hàng đợi FIFO, tổng giới hạn 58000 bit và yêu
cầu trả về khoảng cách ngắn nhất giữ nguyên theo đề chính thức.

Không đọc/ghi stdin/stdout hoặc dùng tệp để trao đổi thông tin. Có thể ghi
thông tin gỡ lỗi ra stderr.

BIÊN DỊCH MẪU

Đặt grader.cpp, transportations.cpp và transportations.h trong cùng thư mục:

    g++ -std=gnu++14 -O2 -o grader grader.cpp transportations.cpp

grader.cpp được chuyển đổi từ trình chấm mẫu chính thức bằng cách đổi các
tiêu đề sang transportations.h và chuyển thông báo Wrong Answer từ stdout
sang stderr cho khớp với mô tả trong đề. Nó vẫn chạy trong MỘT tiến trình và KHÔNG
kiểm tra các giá trị khoảng cách mà Answer trả về. Accepted chỉ cho biết
đúng độ dài mảng và không vượt giới hạn số bit, không xác nhận lời giải đúng
hoặc khả năng hoạt động trong hai tiến trình cách ly. Bản mẫu trong gói này
ghi Wrong Answer, Accepted và số bit ra stderr; khi có lỗi không ghi ra stdout.

Gói phân phối gốc transportations-dist.zip, nếu được đính kèm riêng, chỉ dùng
để đối chiếu giao diện hai tệp ban đầu. Khi nộp bài, dùng giao diện một tệp
của templates.zip này.

Nguồn: Japanese Committee for the International Olympiad in Informatics,
JOI 2018/2019 Spring Training Camp, Two Transportations.
https://www2.ioi-jp.org/camp/2019/2019-sp-tasks/day2/transportations-en.pdf
https://www2.ioi-jp.org/camp/2019/2019-sp-tasks/day2/transportations-dist.zip
Các tệp mẫu gốc giữ nguyên thuật toán; bản chuyển đổi gộp tiêu đề, tách
namespace, định danh lại biến toàn cục N trong phép gán và chuyển tiếp các
hàm giao diện.
CC BY-SA 4.0: https://creativecommons.org/licenses/by-sa/4.0/
