結果
問題 | No.208 王将 |
ユーザー | ry0u_yd |
提出日時 | 2015-09-05 20:00:33 |
言語 | C++11 (gcc 11.4.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 3,237 bytes |
コンパイル時間 | 494 ms |
コンパイル使用メモリ | 72,424 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-19 03:54:02 |
合計ジャッジ時間 | 1,429 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
5,248 KB |
testcase_01 | AC | 1 ms
5,376 KB |
testcase_02 | AC | 1 ms
5,376 KB |
testcase_03 | AC | 1 ms
5,376 KB |
testcase_04 | WA | - |
testcase_05 | WA | - |
testcase_06 | WA | - |
testcase_07 | WA | - |
testcase_08 | WA | - |
testcase_09 | AC | 1 ms
5,376 KB |
testcase_10 | WA | - |
testcase_11 | AC | 1 ms
5,376 KB |
testcase_12 | AC | 1 ms
5,376 KB |
testcase_13 | AC | 2 ms
5,376 KB |
testcase_14 | AC | 1 ms
5,376 KB |
testcase_15 | AC | 2 ms
5,376 KB |
testcase_16 | AC | 2 ms
5,376 KB |
testcase_17 | AC | 1 ms
5,376 KB |
testcase_18 | AC | 2 ms
5,376 KB |
testcase_19 | AC | 2 ms
5,376 KB |
testcase_20 | AC | 1 ms
5,376 KB |
testcase_21 | WA | - |
testcase_22 | AC | 1 ms
5,376 KB |
testcase_23 | WA | - |
testcase_24 | WA | - |
ソースコード
#include <iostream> #include <vector> #include <string> #include <cstring> #include <algorithm> #include <sstream> #include <map> #include <set> #include <cmath> #define REP(i,k,n) for(int i=k;i<n;i++) #define rep(i,n) for(int i=0;i<n;i++) #define INF 1<<30 #define pb push_back #define mp make_pair #define EPS 1e-8 #define equals(a,b) fabs((a) - (b)) < EPS using namespace std; typedef long long ll; typedef pair<int,int> P; struct Point { double x, y; Point(double x=0, double y=0) : x(x), y(y) {} Point operator+(const Point &o) const { return Point(x+o.x, y+o.y); } Point operator-(const Point &o) const { return Point(x-o.x, y-o.y); } Point operator*(const double m) const { return Point(x*m, y*m); } Point operator/(const double d) const { return Point(x/d, y/d); } bool operator<(const Point &o) const { return x != o.x ? x < o.x : y < o.y; } bool operator==(const Point &o) const { return fabs(x-o.x) < EPS && fabs(y-o.y) < EPS; } double cross(const Point &o) const { return x * o.y - y * o.x; } double dot(const Point &o) const { return x * o.x + y * o.y; } double atan() const { return atan2(y, x); } double norm() const { return sqrt(dot(*this)); } double distance(const Point &o) const { return (o - (*this)).norm(); } double area(const Point &a,const Point &b) { Point p = a - (*this), p2 = b - (*this); return p.cross(p2); } double area_abs(const Point &a,const Point &b) const { Point p = a - (*this), p2 = b - (*this); return fabs(p.cross(p2)) / 2.0; } //線分abが自身に含まれているのかどうか判断する int between(const Point &a,const Point &b) { if(area(a,b) != 0) return 0; if(a.x != b.x) return ((a.x <= x) && (x <= b.x) || (a.x >= x) && (x >= b.x)); else return ((a.y <= y) && (y <= b.y) || (a.y >= y) && (y >= b.y)); } double distance_seg(const Point& a,const Point& b) { if((b-a).dot(*this-a) < EPS) { return (*this-a).norm(); } if((a-b).dot(*this-b) < EPS) { return (*this-b).norm(); } return abs((b-a).cross(*this-a)) / (b-a).norm(); } bool hitPolygon(const Point& a,const Point& b,const Point& c) { double t = (b-a).cross(*this-b); double t2 = (c-b).cross(*this-c); double t3 = (a-c).cross(*this-a); if((t > 0 && t2 > 0 && t3 > 0) || ( t < 0 && t2 < 0 && t3 < 0)) { return true; } return false; } }; int main() { int x,y,x2,y2; cin >> x >> y >> x2 >> y2; Point p(0,0), s(x,y), t(x2,y2); if(x == 0) { if(t.between(p,s)) { cout << y + 1 << endl; } else cout << abs(y) << endl; } else if(y == 0) { if(t.between(p,s)) { cout << x + 1 << endl; } else cout << abs(x) << endl; } else if(abs(x2) == abs(y2)) { int ans = abs(x2); if(t.between(p,s)) { ans += 2; } cout << ans << endl; } else { int ans = 0; ans += min(abs(x),abs(y)); ans += max(abs(x),abs(y)) - min(abs(x),abs(y)); cout << ans << endl; } return 0; }