Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //TOJ 460
- #include <bits/stdc++.h>
- using namespace std;
- int tonum(char c){
- if('0' <= c && c <= '9')return c - '0';
- return c - 'A' + 10;
- }
- int maze[3][3];
- int sides[3][3];
- int x[9], y[9];
- int atk[9][4];//0 := up, 1 := left, 2 := down, 3 := right
- int dx[] = {-1, 0, 1, 0};
- int dy[] = {0, -1, 0, 1};
- int32_t main(){
- for(int i = 0; i <= 2; ++i){
- for(int j = 0; j <= 2; ++j){
- sides[i][j] = 0;
- char num;
- cin >> num;
- x[num-'0'] = i;
- y[num-'0'] = j;
- }
- }
- int side = 1;
- for(int i = 0; i < 9; ++i){
- char c;
- for(int j = 0; j < 4; ++j){
- cin >> c;
- atk[i][j] = tonum(c);
- }
- swap(atk[i][2], atk[i][3]);
- maze[x[i]][y[i]] = i;
- sides[x[i]][y[i]] = side;
- for(int j = 0; j < 4; ++j){
- int nx = x[i]+dx[j];
- int ny = y[i]+dy[j];
- if(0 <= nx && nx <= 2 && 0 <= ny && ny <= 2 && sides[nx][ny] == -side && atk[i][j] >= atk[maze[nx][ny]][(j+2)%4]){
- sides[nx][ny] = side;
- }
- }
- side = -side;
- }
- int cnt = 0;
- for(int i = 0; i < 9; ++i){
- if(sides[i/3][i%3] == 1)++cnt;
- }
- cout << cnt << '-' << 9-cnt << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement