FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
timus_cpp/task_2010.cpp at master · artbataev/timus_cpp · GitHub
artbataev
/
timus_cpp
Public
Notifications
You must be signed in to change notification settings
Fork
0
Star
1
Code
Issues
0
Pull requests
2
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
timus_cpp
/
task_2010.cpp
Copy path
More file actions
More file actions
Latest commit
History
History
History
58 lines (45 loc) · 1.68 KB
Breadcrumbs
timus_cpp
/
task_2010.cpp
Copy path
File metadata and controls
58 lines (45 loc) · 1.68 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#
include
<
iostream
>
#
include
<
string
>
#
include
<
set
>
#
include
<
cstdlib
>
bool
field_exists
(
int
n,
int
x,
int
y) {
return
1
<= x && x <= n &&
1
<= y && y <= n;
}
int
get_num_attacked
(
int
n,
int
x,
int
y,
const
std::string& figure) {
if
(figure ==
"
Queen
"
)
return
get_num_attacked
(n, x, y,
"
Rook
"
) +
get_num_attacked
(n, x, y,
"
Bishop
"
);
if
(figure ==
"
Rook
"
)
return
2
* n -
2
;
if
(figure ==
"
Bishop
"
)
return
(n -
std::abs
(x - y)) + (n -
std::abs
(x + y - n -
1
)) -
2
;
if
(figure ==
"
King
"
) {
int
result =
0
;
for
(
int
i = x -
1
; i <= x +
1
; i++)
for
(
int
j = y -
1
; j <= y +
1
; j++)
result +=
static_cast
<
int
>(
field_exists
(n, i, j));
result--;
return
result;
}
if
(figure ==
"
Knight
"
) {
int
result =
0
;
for
(
const
auto
& x_delta: std::set<
int
>{-
2
, -
1
,
1
,
2
})
for
(
const
auto
& y_delta: std::set<
int
>{-
2
, -
1
,
1
,
2
})
if
(
std::abs
(x_delta) !=
std::abs
(y_delta))
result +=
static_cast
<
int
>(
field_exists
(n, x + x_delta, y + y_delta));
return
result;
}
throw
std::logic_error
(
"
Unknown figure
"
);
}
int
main
() {
std::ios::sync_with_stdio
(
false
);
int
n;
int
x, y;
std::cin >> n;
std::cin >> x >> y;
std::cout <<
"
King:
"
<<
get_num_attacked
(n, x, y,
"
King
"
) << std::endl;
std::cout <<
"
Knight:
"
<<
get_num_attacked
(n, x, y,
"
Knight
"
) << std::endl;
std::cout <<
"
Bishop:
"
<<
get_num_attacked
(n, x, y,
"
Bishop
"
) << std::endl;
std::cout <<
"
Rook:
"
<<
get_num_attacked
(n, x, y,
"
Rook
"
) << std::endl;
std::cout <<
"
Queen:
"
<<
get_num_attacked
(n, x, y,
"
Queen
"
) << std::endl;
return
0
;
}
Back
|
FazBrowse Home
|
New Git URL