Link bài: Thuật toán: Ta duyệt các ô trống, nếu ô đó chưa kiểm soát thì ta đánh dấu lại. Quân xe sẽ kiểm soát các ô từ dòng 1-8 của cột xc và các ô từ cột 1-8 của dòng xd. Quân tượng sẽ kiểm soát các đường chéo tỏa ra 4 hướng. Code: Mã: #include <bits/stdc++.h> using namespace std; int bc[70][70]; int xd, xc, td, tc, ans; void runfor(int position_x, int position_y, int direction_x, int direction_y){ int a = position_x; int b = position_y; while(a <= 8 && a > 0 && b <= 8 && b > 0){ if (bc[a] == 0){ bc[a] = 1; ans++; } a += direction_x; b += direction_y; } } void read(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); //freopen("BACO.INP", "r", stdin); //freopen("BACO.OUT", "w", stdout); cin >> xd >> xc >> td >> tc; } void run(){ for(int i = 1; i <= 8; i++){ if (bc[xc] == 0){ bc[xc] = 1; ans++; } if (bc[xd] == 0){ bc[xd] = 1; ans++; } } runfor(td, tc, 1, 1); runfor(td, tc, 1, -1); runfor(td, tc, -1, -1); runfor(td, tc, -1, 1); cout << ans; } int main(){ read(); run(); return 0; }