Submission #2695262


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;
        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 0
Code Size 3377 Byte
Status WA
Exec Time 321 ms
Memory 896 KB

Judge Result

Set Name Subtask1 Subtask2 Subtask3 Subtask4
Score / Max Score 0 / 50 0 / 50 0 / 50 0 / 150
Status
AC × 24
WA × 1
AC × 28
WA × 22
AC × 28
WA × 47
AC × 28
WA × 72
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 WA 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 WA 1 ms 256 KB
21_rand01.txt WA 1 ms 256 KB
21_rand02.txt WA 1 ms 256 KB
21_rand03.txt WA 1 ms 256 KB
21_rand04.txt AC 1 ms 256 KB
21_rand05.txt WA 1 ms 256 KB
21_rand06.txt WA 1 ms 256 KB
21_rand07.txt WA 3 ms 256 KB
21_rand08.txt WA 1 ms 256 KB
21_rand09.txt WA 1 ms 256 KB
21_rand10.txt WA 1 ms 256 KB
21_rand11.txt WA 1 ms 256 KB
21_rand12.txt AC 1 ms 256 KB
21_rand13.txt WA 1 ms 256 KB
21_rand14.txt WA 1 ms 256 KB
21_rand15.txt WA 1 ms 256 KB
21_rand16.txt WA 1 ms 256 KB
21_rand17.txt WA 1 ms 256 KB
21_rand18.txt WA 2 ms 256 KB
21_rand19.txt WA 1 ms 256 KB
21_rand20.txt WA 1 ms 256 KB
21_rand21.txt WA 1 ms 256 KB
21_rand22.txt WA 1 ms 256 KB
21_rand23.txt AC 1 ms 256 KB
21_rand24.txt AC 1 ms 256 KB
31_rand00.txt WA 2 ms 256 KB
31_rand01.txt WA 3 ms 256 KB
31_rand02.txt WA 4 ms 256 KB
31_rand03.txt WA 3 ms 256 KB
31_rand04.txt WA 2 ms 256 KB
31_rand05.txt WA 4 ms 256 KB
31_rand06.txt WA 3 ms 256 KB
31_rand07.txt WA 2 ms 256 KB
31_rand08.txt WA 4 ms 256 KB
31_rand09.txt WA 4 ms 256 KB
31_rand10.txt WA 2 ms 256 KB
31_rand11.txt WA 3 ms 256 KB
31_rand12.txt WA 3 ms 256 KB
31_rand13.txt WA 4 ms 256 KB
31_rand14.txt WA 1 ms 256 KB
31_rand15.txt WA 3 ms 256 KB
31_rand16.txt WA 3 ms 256 KB
31_rand17.txt WA 2 ms 256 KB
31_rand18.txt WA 3 ms 256 KB
31_rand19.txt WA 2 ms 256 KB
31_rand20.txt WA 2 ms 256 KB
31_rand21.txt WA 2 ms 256 KB
31_rand22.txt WA 3 ms 256 KB
31_rand23.txt WA 3 ms 256 KB
31_rand24.txt WA 3 ms 256 KB
41_rand00.txt WA 201 ms 640 KB
41_rand01.txt WA 113 ms 512 KB
41_rand02.txt WA 226 ms 896 KB
41_rand03.txt WA 116 ms 512 KB
41_rand04.txt WA 144 ms 640 KB
41_rand05.txt WA 45 ms 256 KB
41_rand06.txt WA 6 ms 256 KB
41_rand07.txt WA 191 ms 768 KB
41_rand08.txt WA 87 ms 384 KB
41_rand09.txt WA 193 ms 768 KB
41_rand10.txt WA 249 ms 768 KB
41_rand11.txt WA 223 ms 768 KB
41_rand12.txt WA 204 ms 768 KB
41_rand13.txt WA 216 ms 768 KB
41_rand14.txt WA 172 ms 768 KB
41_rand15.txt WA 105 ms 512 KB
41_rand16.txt WA 192 ms 640 KB
41_rand17.txt WA 107 ms 512 KB
41_rand18.txt WA 2 ms 256 KB
41_rand19.txt WA 2 ms 256 KB
41_rand20.txt WA 2 ms 256 KB
41_rand21.txt WA 2 ms 256 KB
41_rand22.txt WA 2 ms 256 KB
41_rand23.txt WA 309 ms 768 KB
41_rand24.txt WA 321 ms 768 KB