kdzhr

Калькулятор

Jan 17th, 2020
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.99 KB | None | 0 0
  1. // OK A region first day 16/17 https://informatics.mccme.ru/mod/statements/view3.php?id=24702&chapterid=113440#
  2.  
  3. #include <iostream>
  4.  
  5. using namespace std;
  6. const int32_t SIZE = 65;
  7. int64_t m[SIZE][SIZE][SIZE];
  8.  
  9. int main() {
  10.     int64_t n;
  11.     int32_t a, b, c;
  12.     cin >> n >> a >> b >> c;
  13.     for (int32_t i = 0; i < SIZE; i++) {
  14.         for (int32_t j = 0; j < SIZE; j++) {
  15.             for (int32_t k = 0; k < SIZE; k++) {
  16.                 m[i][j][k] = -1;
  17.             }
  18.         }
  19.     }
  20.     m[0][0][0] = n;
  21.  
  22.     for (int32_t i = 0; i <= a; i++) {
  23.         for (int32_t j = 0; j <= b; j++) {
  24.             for (int32_t k = 0; k <= c; k++) {
  25.                 if (i == j && j == k && i == 0) continue;
  26.                 if (i != 0) {
  27.                     m[i][j][k] = m[i - 1][j][k] / 2;
  28.                 }
  29.                 if (j != 0 && (m[i][j][k] == -1 || m[i][j][k] > (m[i][j - 1][k] + 1) / 2)) {
  30.                     m[i][j][k] = (m[i][j - 1][k] + 1) / 2;
  31.                 }
  32.                 if (k != 0 && (m[i][j][k] == -1 || m[i][j][k] > (m[i][j][k - 1] - 1) / 2)) {
  33.                     m[i][j][k] = (m[i][j][k - 1] - 1) / 2;
  34.                 }
  35.             }
  36.         }
  37.     }
  38.     cout << m[a][b][c];
  39.     return 0;
  40. }
Add Comment
Please, Sign In to add comment