Advertisement
Guest User

Untitled

a guest
Dec 7th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.92 KB | None | 0 0
  1. #include <fstream>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. ifstream in("rufe.in");
  7. ofstream out("rufe.out");
  8.  
  9. long long ROWS, COLS, SOCK_X, SOCK_Y, SHIRTS;
  10.  
  11. long long distance(long long x_1,
  12.                             long long y_1,
  13.                             long long x_2,
  14.                             long long y_2) {
  15.     return abs(x_1 - x_2) + abs(y_1 - y_2);
  16. }
  17.  
  18. long long get_max_distance() {
  19.     long long max_dist = distance(SOCK_X - 1, SOCK_Y - 1, 0, 0);
  20.  
  21.     long long dist = distance(SOCK_X - 1, SOCK_Y - 1, 0, ROWS - 1);
  22.     if (dist > max_dist)
  23.         max_dist = dist;
  24.  
  25.     dist = distance(SOCK_X - 1, SOCK_Y - 1, COLS - 1, 0);
  26.     if (dist > max_dist)
  27.         max_dist = dist;
  28.  
  29.     dist = distance(SOCK_X - 1, SOCK_Y - 1, COLS - 1, ROWS - 1);
  30.     if (dist > max_dist)
  31.         max_dist = dist;
  32.  
  33.     return max_dist;
  34. }
  35.  
  36. unsigned long long delta_yn(long long dist) {
  37.     if (SOCK_Y - 1 - dist >= 0)
  38.         return 0;
  39.  
  40.     return abs(SOCK_Y - 1 - dist) - 1;
  41. }
  42.  
  43. unsigned long long delta_xn(long long dist) {
  44.     if (SOCK_X - 1 - dist >= 0)
  45.         return 0;
  46.  
  47.     return abs(SOCK_X - 1 - dist) - 1;
  48. }
  49.  
  50. unsigned long long delta_yp(long long dist) {
  51.     if (SOCK_Y - 1 + dist <= ROWS - 1)
  52.         return 0;
  53.  
  54.     return SOCK_Y + dist - ROWS - 1;
  55. }
  56.  
  57. unsigned long long delta_xp(long long dist) {
  58.     if (SOCK_X - 1 + dist <= COLS - 1)
  59.         return 0;
  60.  
  61.     return SOCK_X + dist - COLS - 1;
  62. }
  63.  
  64. unsigned long long get_outsiders(long long distance) {
  65.     return delta_yn(distance) + delta_xn(distance) +
  66.            delta_yp(distance) + delta_xp(distance);
  67. }
  68.  
  69. int main() {
  70.     in >> ROWS >> COLS >> SOCK_Y >> SOCK_X >> SHIRTS;
  71.     long long distance = get_max_distance();
  72.  
  73.     while (SHIRTS > 0) {
  74.         unsigned long long outsiders = get_outsiders(distance);
  75.  
  76.         SHIRTS -= distance * 4 - outsiders;
  77.  
  78.         distance--;
  79.     }
  80.  
  81.     out << distance << endl;
  82.  
  83.     return 0;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement