Có M tài khoản (mỗi tài khoản là một Object lock RIÊNG). T giao dịch chuyển từ u sang v giá trị x được chạy song song bởi T thread. Để tránh deadlock, mỗi giao dịch PHẢI lock 2 tài khoản theo THỨ TỰ ID TĂNG DẦN (synchronized(locks[min(u,v)]) bên ngoài, synchronized(locks[max(u,v)]) bên trong), rồi mới cập nhật balance. Sau khi join, in M số dư cuối theo thứ tự 0..M-1.
Dòng 1: M T. Dòng 2: M số dư ban đầu. T dòng: u v x.
1 ≤ M ≤ 100; 0 ≤ T ≤ 1000; u ≠ v
M số dư cuối cách nhau bởi dấu cách (deterministic vì cộng/trừ giao hoán).
Ví dụ:
Đầu vào:
3 3
100 100 100
0 1 10
1 2 20
2 0 30
Đầu ra:
120 90 90
Giải thích:
Đang tải editor...