Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // OK A region first day 16/17 https://informatics.mccme.ru/mod/statements/view3.php?id=24702&chapterid=113440#
- #include <iostream>
- using namespace std;
- const int32_t SIZE = 65;
- int64_t m[SIZE][SIZE][SIZE];
- int main() {
- int64_t n;
- int32_t a, b, c;
- cin >> n >> a >> b >> c;
- for (int32_t i = 0; i < SIZE; i++) {
- for (int32_t j = 0; j < SIZE; j++) {
- for (int32_t k = 0; k < SIZE; k++) {
- m[i][j][k] = -1;
- }
- }
- }
- m[0][0][0] = n;
- for (int32_t i = 0; i <= a; i++) {
- for (int32_t j = 0; j <= b; j++) {
- for (int32_t k = 0; k <= c; k++) {
- if (i == j && j == k && i == 0) continue;
- if (i != 0) {
- m[i][j][k] = m[i - 1][j][k] / 2;
- }
- if (j != 0 && (m[i][j][k] == -1 || m[i][j][k] > (m[i][j - 1][k] + 1) / 2)) {
- m[i][j][k] = (m[i][j - 1][k] + 1) / 2;
- }
- if (k != 0 && (m[i][j][k] == -1 || m[i][j][k] > (m[i][j][k - 1] - 1) / 2)) {
- m[i][j][k] = (m[i][j][k - 1] - 1) / 2;
- }
- }
- }
- }
- cout << m[a][b][c];
- return 0;
- }
Add Comment
Please, Sign In to add comment