diff options
| author | crupest <crupest@outlook.com> | 2021-03-15 20:14:43 +0800 | 
|---|---|---|
| committer | crupest <crupest@outlook.com> | 2021-03-15 20:14:43 +0800 | 
| commit | 06de1eef6da62307ce23cf0a4cf6713c18348148 (patch) | |
| tree | 5b4e888d298bf5b277a937de015d386e3bddd9a8 /works/solutions/acwing | |
| parent | 61e14abc77a486c90f9b9260c64697e8af7bf6fe (diff) | |
| download | crupest-06de1eef6da62307ce23cf0a4cf6713c18348148.tar.gz crupest-06de1eef6da62307ce23cf0a4cf6713c18348148.tar.bz2 crupest-06de1eef6da62307ce23cf0a4cf6713c18348148.zip | |
import(solutions): Add acwing 1237.
Diffstat (limited to 'works/solutions/acwing')
| -rw-r--r-- | works/solutions/acwing/1237.cpp | 49 | 
1 files changed, 49 insertions, 0 deletions
| diff --git a/works/solutions/acwing/1237.cpp b/works/solutions/acwing/1237.cpp new file mode 100644 index 0000000..a3b8810 --- /dev/null +++ b/works/solutions/acwing/1237.cpp @@ -0,0 +1,49 @@ +#include <cmath>
 +#include <iostream>
 +
 +using ll = long long;
 +
 +int main() {
 +  ll X, Y;
 +  std::cin >> X >> Y;
 +
 +  ll result = 0;
 +
 +  if (X == 0 && Y == 0) {
 +    return 0;
 +  }
 +
 +  if (std::abs(X) > std::abs(Y) ||
 +      (std::abs(X) == std::abs(Y) && !(X < 0 && Y < 0))) {
 +    ll c = std::abs(X);
 +
 +    result += ((c - 1) * 4 + 2) * (c - 1);
 +
 +    if (X > 0) {
 +      result += (c * 2 - 1) * 2;
 +      result += c * 2;
 +      result += (c - Y);
 +    } else {
 +      result += (c * 2 - 1);
 +      result += (Y - (-c + 1));
 +    }
 +
 +  } else {
 +    ll c = std::abs(Y);
 +
 +    result += ((c - 1) * 4 + 2) * (c - 1);
 +
 +    if (Y > 0) {
 +      result += (c * 2 - 1) * 2;
 +      result += (X - (-c));
 +    } else {
 +      result += (c * 2 - 1) * 2;
 +      result += c * 2 * 2;
 +      result += c - X;
 +    }
 +  }
 +
 +  std::cout << result;
 +
 +  return 0;
 +}
 | 
