Submission #2695297
Source Code Expand
#include <bits/stdc++.h> using namespace std; using uint = unsigned int; using ll = long long; using ull = unsigned long long; constexpr ll TEN(int n) { return (n==0) ? 1 : 10*TEN(n-1); } template<class T> using V = vector<T>; template<class T> using VV = V<V<T>>; using D = long long; const D EPS = 0; int sgn(D a) { return (abs(a) <= EPS) ? 0 : (a < 0 ? -1 : 1); } int sgn(D a, D b) { return sgn(a-b); } struct Pt2 { D x, y; Pt2() {} Pt2(D _x, D _y) : x(_x), y(_y) {} Pt2 operator+(const Pt2 &r) const { return Pt2(x+r.x, y+r.y); } Pt2 operator-(const Pt2 &r) const { return Pt2(x-r.x, y-r.y); } Pt2 operator-() const { return Pt2(-x, -y); } bool operator<(const Pt2 &r) const { return 2*sgn(x, r.x)+sgn(y, r.y)<0; } bool operator==(const Pt2 &r) const { return sgn((*this-r).rabs()) == 0; } D rabs() const { return max(std::abs(x), std::abs(y)); } }; ostream& operator<<(ostream& os, const Pt2 &p) { return os << "P(" << p.x << ", " << p.y << ")"; } using P = Pt2; using Pol = V<P>; D cross(P a, P b) { return a.x*b.y - a.y*b.x; } D dot(P a, P b) { return a.x*b.x + a.y*b.y; } int ccw(P b, P c) { int s = sgn(cross(b, c)); if (s) return s; if (!sgn(c.rabs()) || !sgn((c-b).rabs())) return 0; if (dot(b, c) < 0) return 2; if (dot(-b, c-b) < 0) return -2; return 0; } int ccw(P a, P b, P c) { return ccw(b-a, c-a); } struct Convex { set<P> pol; bool cng(P p) { if (pol.size() == 0) return true; auto fi = *pol.begin(), ed = *pol.rbegin(); if (p < fi || ed < p) return true; if (p == fi || p == ed) return false; auto it = pol.lower_bound(p); assert(it != pol.begin()); auto ri = *it; it--; auto le = *it; if (ccw(le, ri, p) != 1) return false; return true; } bool lenorm(P p) { auto it = pol.lower_bound(p); if (it == pol.begin()) return false; it--; auto ri = *it; if (it == pol.begin()) return false; it--; auto le = *it; if (ccw(le, ri, p) == -1) return false; pol.erase(ri); return true; } bool rinorm(P p) { auto it = pol.lower_bound(p); if (it == pol.end()) return false; auto le = *it; it++; if (it == pol.end()) return false; auto ri = *it; it++; if (ccw(p, le, ri) == -1) return false; pol.erase(le); return true; } void ins(P p) { if (!cng(p)) return; while (lenorm(p)) {} while (rinorm(p)) {} pol.insert(p); } }; int main(void) { ios::sync_with_stdio(false); cin.tie(0); cout << setprecision(20) << fixed; Convex up, dw; int n; cin >> n; for (int i = 0; i < n; i++) { string s; D x, y; cin >> s >> x >> y; P p = P(x, y); if (s == "TARGET") { bool f1 = up.cng(p); bool f2 = dw.cng(-p); // cout << f1 << " " << f2 << " " << up.pol.size() << " " << dw.pol.size() << endl; if (!f1 && !f2) cout << "DANGER" << endl; else cout << "SAFE" << endl; } else { up.ins(p); dw.ins(-p); } } return 0; }
Submission Info
Submission Time | |
---|---|
Task | C - 泥棒 |
User | yosupo |
Language | C++14 (GCC 5.4.1) |
Score | 300 |
Code Size | 3392 Byte |
Status | AC |
Exec Time | 405 ms |
Memory | 7040 KB |
Judge Result
Set Name | Subtask1 | Subtask2 | Subtask3 | Subtask4 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 50 / 50 | 50 / 50 | 50 / 50 | 150 / 150 | ||||||||
Status |
|
|
|
|
Set Name | Test Cases |
---|---|
Subtask1 | 11_rand00.txt, 11_rand01.txt, 11_rand02.txt, 11_rand03.txt, 11_rand04.txt, 11_rand05.txt, 11_rand06.txt, 11_rand07.txt, 11_rand08.txt, 11_rand09.txt, 11_rand10.txt, 11_rand11.txt, 11_rand12.txt, 11_rand13.txt, 11_rand14.txt, 11_rand15.txt, 11_rand16.txt, 11_rand17.txt, 11_rand18.txt, 11_rand19.txt, 11_rand20.txt, 11_rand21.txt, 11_rand22.txt, 11_rand23.txt, 11_rand24.txt |
Subtask2 | 11_rand00.txt, 11_rand01.txt, 11_rand02.txt, 11_rand03.txt, 11_rand04.txt, 11_rand05.txt, 11_rand06.txt, 11_rand07.txt, 11_rand08.txt, 11_rand09.txt, 11_rand10.txt, 11_rand11.txt, 11_rand12.txt, 11_rand13.txt, 11_rand14.txt, 11_rand15.txt, 11_rand16.txt, 11_rand17.txt, 11_rand18.txt, 11_rand19.txt, 11_rand20.txt, 11_rand21.txt, 11_rand22.txt, 11_rand23.txt, 11_rand24.txt, 21_rand00.txt, 21_rand01.txt, 21_rand02.txt, 21_rand03.txt, 21_rand04.txt, 21_rand05.txt, 21_rand06.txt, 21_rand07.txt, 21_rand08.txt, 21_rand09.txt, 21_rand10.txt, 21_rand11.txt, 21_rand12.txt, 21_rand13.txt, 21_rand14.txt, 21_rand15.txt, 21_rand16.txt, 21_rand17.txt, 21_rand18.txt, 21_rand19.txt, 21_rand20.txt, 21_rand21.txt, 21_rand22.txt, 21_rand23.txt, 21_rand24.txt |
Subtask3 | 11_rand00.txt, 11_rand01.txt, 11_rand02.txt, 11_rand03.txt, 11_rand04.txt, 11_rand05.txt, 11_rand06.txt, 11_rand07.txt, 11_rand08.txt, 11_rand09.txt, 11_rand10.txt, 11_rand11.txt, 11_rand12.txt, 11_rand13.txt, 11_rand14.txt, 11_rand15.txt, 11_rand16.txt, 11_rand17.txt, 11_rand18.txt, 11_rand19.txt, 11_rand20.txt, 11_rand21.txt, 11_rand22.txt, 11_rand23.txt, 11_rand24.txt, 21_rand00.txt, 21_rand01.txt, 21_rand02.txt, 21_rand03.txt, 21_rand04.txt, 21_rand05.txt, 21_rand06.txt, 21_rand07.txt, 21_rand08.txt, 21_rand09.txt, 21_rand10.txt, 21_rand11.txt, 21_rand12.txt, 21_rand13.txt, 21_rand14.txt, 21_rand15.txt, 21_rand16.txt, 21_rand17.txt, 21_rand18.txt, 21_rand19.txt, 21_rand20.txt, 21_rand21.txt, 21_rand22.txt, 21_rand23.txt, 21_rand24.txt, 31_rand00.txt, 31_rand01.txt, 31_rand02.txt, 31_rand03.txt, 31_rand04.txt, 31_rand05.txt, 31_rand06.txt, 31_rand07.txt, 31_rand08.txt, 31_rand09.txt, 31_rand10.txt, 31_rand11.txt, 31_rand12.txt, 31_rand13.txt, 31_rand14.txt, 31_rand15.txt, 31_rand16.txt, 31_rand17.txt, 31_rand18.txt, 31_rand19.txt, 31_rand20.txt, 31_rand21.txt, 31_rand22.txt, 31_rand23.txt, 31_rand24.txt |
Subtask4 | 11_rand00.txt, 11_rand01.txt, 11_rand02.txt, 11_rand03.txt, 11_rand04.txt, 11_rand05.txt, 11_rand06.txt, 11_rand07.txt, 11_rand08.txt, 11_rand09.txt, 11_rand10.txt, 11_rand11.txt, 11_rand12.txt, 11_rand13.txt, 11_rand14.txt, 11_rand15.txt, 11_rand16.txt, 11_rand17.txt, 11_rand18.txt, 11_rand19.txt, 11_rand20.txt, 11_rand21.txt, 11_rand22.txt, 11_rand23.txt, 11_rand24.txt, 21_rand00.txt, 21_rand01.txt, 21_rand02.txt, 21_rand03.txt, 21_rand04.txt, 21_rand05.txt, 21_rand06.txt, 21_rand07.txt, 21_rand08.txt, 21_rand09.txt, 21_rand10.txt, 21_rand11.txt, 21_rand12.txt, 21_rand13.txt, 21_rand14.txt, 21_rand15.txt, 21_rand16.txt, 21_rand17.txt, 21_rand18.txt, 21_rand19.txt, 21_rand20.txt, 21_rand21.txt, 21_rand22.txt, 21_rand23.txt, 21_rand24.txt, 31_rand00.txt, 31_rand01.txt, 31_rand02.txt, 31_rand03.txt, 31_rand04.txt, 31_rand05.txt, 31_rand06.txt, 31_rand07.txt, 31_rand08.txt, 31_rand09.txt, 31_rand10.txt, 31_rand11.txt, 31_rand12.txt, 31_rand13.txt, 31_rand14.txt, 31_rand15.txt, 31_rand16.txt, 31_rand17.txt, 31_rand18.txt, 31_rand19.txt, 31_rand20.txt, 31_rand21.txt, 31_rand22.txt, 31_rand23.txt, 31_rand24.txt, 41_rand00.txt, 41_rand01.txt, 41_rand02.txt, 41_rand03.txt, 41_rand04.txt, 41_rand05.txt, 41_rand06.txt, 41_rand07.txt, 41_rand08.txt, 41_rand09.txt, 41_rand10.txt, 41_rand11.txt, 41_rand12.txt, 41_rand13.txt, 41_rand14.txt, 41_rand15.txt, 41_rand16.txt, 41_rand17.txt, 41_rand18.txt, 41_rand19.txt, 41_rand20.txt, 41_rand21.txt, 41_rand22.txt, 41_rand23.txt, 41_rand24.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
11_rand00.txt | AC | 1 ms | 256 KB |
11_rand01.txt | AC | 1 ms | 256 KB |
11_rand02.txt | AC | 1 ms | 256 KB |
11_rand03.txt | AC | 1 ms | 256 KB |
11_rand04.txt | AC | 1 ms | 256 KB |
11_rand05.txt | AC | 1 ms | 256 KB |
11_rand06.txt | AC | 1 ms | 256 KB |
11_rand07.txt | AC | 1 ms | 256 KB |
11_rand08.txt | AC | 1 ms | 256 KB |
11_rand09.txt | AC | 1 ms | 256 KB |
11_rand10.txt | AC | 1 ms | 256 KB |
11_rand11.txt | AC | 1 ms | 256 KB |
11_rand12.txt | AC | 1 ms | 256 KB |
11_rand13.txt | AC | 1 ms | 256 KB |
11_rand14.txt | AC | 1 ms | 256 KB |
11_rand15.txt | AC | 1 ms | 256 KB |
11_rand16.txt | AC | 1 ms | 256 KB |
11_rand17.txt | AC | 1 ms | 256 KB |
11_rand18.txt | AC | 1 ms | 256 KB |
11_rand19.txt | AC | 1 ms | 256 KB |
11_rand20.txt | AC | 1 ms | 256 KB |
11_rand21.txt | AC | 1 ms | 256 KB |
11_rand22.txt | AC | 1 ms | 256 KB |
11_rand23.txt | AC | 1 ms | 256 KB |
11_rand24.txt | AC | 1 ms | 256 KB |
21_rand00.txt | AC | 2 ms | 256 KB |
21_rand01.txt | AC | 1 ms | 256 KB |
21_rand02.txt | AC | 1 ms | 256 KB |
21_rand03.txt | AC | 1 ms | 256 KB |
21_rand04.txt | AC | 1 ms | 256 KB |
21_rand05.txt | AC | 1 ms | 256 KB |
21_rand06.txt | AC | 1 ms | 256 KB |
21_rand07.txt | AC | 1 ms | 256 KB |
21_rand08.txt | AC | 1 ms | 256 KB |
21_rand09.txt | AC | 1 ms | 256 KB |
21_rand10.txt | AC | 1 ms | 256 KB |
21_rand11.txt | AC | 1 ms | 256 KB |
21_rand12.txt | AC | 1 ms | 256 KB |
21_rand13.txt | AC | 1 ms | 256 KB |
21_rand14.txt | AC | 1 ms | 256 KB |
21_rand15.txt | AC | 1 ms | 256 KB |
21_rand16.txt | AC | 1 ms | 256 KB |
21_rand17.txt | AC | 1 ms | 256 KB |
21_rand18.txt | AC | 1 ms | 256 KB |
21_rand19.txt | AC | 1 ms | 256 KB |
21_rand20.txt | AC | 1 ms | 256 KB |
21_rand21.txt | AC | 1 ms | 256 KB |
21_rand22.txt | AC | 1 ms | 256 KB |
21_rand23.txt | AC | 1 ms | 256 KB |
21_rand24.txt | AC | 1 ms | 256 KB |
31_rand00.txt | AC | 2 ms | 256 KB |
31_rand01.txt | AC | 3 ms | 256 KB |
31_rand02.txt | AC | 3 ms | 256 KB |
31_rand03.txt | AC | 3 ms | 256 KB |
31_rand04.txt | AC | 2 ms | 256 KB |
31_rand05.txt | AC | 4 ms | 256 KB |
31_rand06.txt | AC | 3 ms | 256 KB |
31_rand07.txt | AC | 2 ms | 256 KB |
31_rand08.txt | AC | 4 ms | 256 KB |
31_rand09.txt | AC | 4 ms | 256 KB |
31_rand10.txt | AC | 2 ms | 256 KB |
31_rand11.txt | AC | 3 ms | 256 KB |
31_rand12.txt | AC | 3 ms | 256 KB |
31_rand13.txt | AC | 4 ms | 256 KB |
31_rand14.txt | AC | 1 ms | 256 KB |
31_rand15.txt | AC | 3 ms | 256 KB |
31_rand16.txt | AC | 3 ms | 256 KB |
31_rand17.txt | AC | 2 ms | 256 KB |
31_rand18.txt | AC | 3 ms | 256 KB |
31_rand19.txt | AC | 2 ms | 256 KB |
31_rand20.txt | AC | 2 ms | 256 KB |
31_rand21.txt | AC | 2 ms | 256 KB |
31_rand22.txt | AC | 3 ms | 256 KB |
31_rand23.txt | AC | 3 ms | 256 KB |
31_rand24.txt | AC | 3 ms | 256 KB |
41_rand00.txt | AC | 200 ms | 768 KB |
41_rand01.txt | AC | 117 ms | 512 KB |
41_rand02.txt | AC | 234 ms | 896 KB |
41_rand03.txt | AC | 116 ms | 512 KB |
41_rand04.txt | AC | 141 ms | 640 KB |
41_rand05.txt | AC | 42 ms | 256 KB |
41_rand06.txt | AC | 5 ms | 256 KB |
41_rand07.txt | AC | 190 ms | 768 KB |
41_rand08.txt | AC | 87 ms | 384 KB |
41_rand09.txt | AC | 188 ms | 768 KB |
41_rand10.txt | AC | 248 ms | 768 KB |
41_rand11.txt | AC | 218 ms | 768 KB |
41_rand12.txt | AC | 202 ms | 768 KB |
41_rand13.txt | AC | 215 ms | 768 KB |
41_rand14.txt | AC | 177 ms | 768 KB |
41_rand15.txt | AC | 104 ms | 512 KB |
41_rand16.txt | AC | 196 ms | 640 KB |
41_rand17.txt | AC | 107 ms | 512 KB |
41_rand18.txt | AC | 2 ms | 256 KB |
41_rand19.txt | AC | 2 ms | 256 KB |
41_rand20.txt | AC | 2 ms | 256 KB |
41_rand21.txt | AC | 2 ms | 256 KB |
41_rand22.txt | AC | 2 ms | 256 KB |
41_rand23.txt | AC | 394 ms | 7040 KB |
41_rand24.txt | AC | 405 ms | 7040 KB |