Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <iostream>
- using namespace std;
- ifstream in("rufe.in");
- ofstream out("rufe.out");
- long long ROWS, COLS, SOCK_X, SOCK_Y, SHIRTS;
- long long distance(long long x_1,
- long long y_1,
- long long x_2,
- long long y_2) {
- return abs(x_1 - x_2) + abs(y_1 - y_2);
- }
- long long get_max_distance() {
- long long max_dist = distance(SOCK_X - 1, SOCK_Y - 1, 0, 0);
- long long dist = distance(SOCK_X - 1, SOCK_Y - 1, 0, ROWS - 1);
- if (dist > max_dist)
- max_dist = dist;
- dist = distance(SOCK_X - 1, SOCK_Y - 1, COLS - 1, 0);
- if (dist > max_dist)
- max_dist = dist;
- dist = distance(SOCK_X - 1, SOCK_Y - 1, COLS - 1, ROWS - 1);
- if (dist > max_dist)
- max_dist = dist;
- return max_dist;
- }
- unsigned long long delta_yn(long long dist) {
- if (SOCK_Y - 1 - dist >= 0)
- return 0;
- return abs(SOCK_Y - 1 - dist) - 1;
- }
- unsigned long long delta_xn(long long dist) {
- if (SOCK_X - 1 - dist >= 0)
- return 0;
- return abs(SOCK_X - 1 - dist) - 1;
- }
- unsigned long long delta_yp(long long dist) {
- if (SOCK_Y - 1 + dist <= ROWS - 1)
- return 0;
- return SOCK_Y + dist - ROWS - 1;
- }
- unsigned long long delta_xp(long long dist) {
- if (SOCK_X - 1 + dist <= COLS - 1)
- return 0;
- return SOCK_X + dist - COLS - 1;
- }
- unsigned long long get_outsiders(long long distance) {
- return delta_yn(distance) + delta_xn(distance) +
- delta_yp(distance) + delta_xp(distance);
- }
- int main() {
- in >> ROWS >> COLS >> SOCK_Y >> SOCK_X >> SHIRTS;
- long long distance = get_max_distance();
- while (SHIRTS > 0) {
- unsigned long long outsiders = get_outsiders(distance);
- SHIRTS -= distance * 4 - outsiders;
- distance--;
- }
- out << distance << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement