Submission #125680


Source Code Expand

#include<iostream>
#include<algorithm>
#include<set>
#include<string>

using namespace std;

string s;


struct P{
	double x, y;
	P(){};
	P(double a, double b){
		x = a;
		y = b;
	}
	P operator-(P a){
		return P(x - a.x, y - a.y);
	}
	P operator+(P a){
		return P(x + a.x, y + a.y);
	}

};       

namespace std{
	bool operator<(const P& a, const P& b){
		if(a.x == b.x)return a.y < b.y;
		return a.x < b.x;
	}
}

double det(P a, P b){
	return a.x * b.y - b.x * a.y;
}

int ccw(P a, P b, P c){
	c = c - a;
	b = b - a;
	if(det(b, c) > 0)return 1;
	if(det(b, c) < 0)return -1;
	return 0;
}

void add_upper(set<P> &uc, P p){
	if(uc.size() < 2)uc.insert(p);
	else{
		auto it = uc.lower_bound(p);
		if(it != uc.begin() && it != uc.end() && ccw(*prev(it), *it, p) <= 0)return;
		if(it != uc.end())
			for(auto jt = it;next(jt) != uc.end() && ccw(*jt, *next(jt), p) >= 0;uc.erase(jt++));
		it = uc.lower_bound(p);
		if(it != uc.begin())
			for(auto jt = prev(it);jt != uc.begin() && ccw(*jt, *prev(jt), p) <= 0;uc.erase(jt--));
		uc.insert(p);
	}
}

void add_lower(set<P> &lc, P p){
	if(lc.size() < 2)lc.insert(p);
	else{
		auto it = lc.lower_bound(p);
		if(it != lc.begin() && it != lc.end() && ccw(*prev(it), *it, p) >= 0)return;
		if(it != lc.end())
			for(auto jt = it;next(jt) != lc.end() && ccw(*jt, *next(jt), p) <= 0;lc.erase(jt++));
		it = lc.lower_bound(p);
		if(it != lc.begin())
			for(auto jt = prev(it);jt != lc.begin() && ccw(*jt, *prev(jt), p) >= 0;lc.erase(jt--));
		lc.insert(p);
	}
}

bool inside(set<P> &uc, set<P> &lc, P p){
	if(uc.size() < 2)return false;

	auto uit = uc.lower_bound(p);
	auto lit = lc.lower_bound(p);
	if(uit == uc.begin() || lit == lc.begin() || uit == uc.end() || lit == lc.end())return false;
	if(ccw(*prev(uit), *uit, p) > 0)return false;
	if(ccw(*prev(lit), *lit, p) < 0)return false;
	return true;
}




int main(){
	int n;
	double x, y;
	set<P> lc, uc;
	cin >> n;
	for(int i = 0;i < n;i++){
		cin >> s >> x >> y;
		if(s == "MONITOR"){
			add_upper(uc, P(x, y));
			add_lower(lc, P(x, y));
		}
		else{
			if(inside(uc, lc, P(x, y))){
				cout << "DANGER" << endl;
			}
			else{
				cout << "SAFE" << endl;
			}
		}
	}
	return 0;
}

Submission Info

Submission Time
Task C - 泥棒
User catupper
Language C++11 (GCC 4.8.1)
Score 300
Code Size 2279 Byte
Status AC
Exec Time 1281 ms
Memory 7724 KB

Judge Result

Set Name Subtask1 Subtask2 Subtask3 Subtask4
Score / Max Score 50 / 50 50 / 50 50 / 50 150 / 150
Status
AC × 25
AC × 50
AC × 75
AC × 100
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 172 ms 1056 KB
11_rand01.txt AC 154 ms 1060 KB
11_rand02.txt AC 53 ms 944 KB
11_rand03.txt AC 25 ms 984 KB
11_rand04.txt AC 25 ms 992 KB
11_rand05.txt AC 24 ms 992 KB
11_rand06.txt AC 24 ms 988 KB
11_rand07.txt AC 24 ms 916 KB
11_rand08.txt AC 25 ms 988 KB
11_rand09.txt AC 25 ms 984 KB
11_rand10.txt AC 25 ms 932 KB
11_rand11.txt AC 24 ms 924 KB
11_rand12.txt AC 25 ms 992 KB
11_rand13.txt AC 25 ms 992 KB
11_rand14.txt AC 24 ms 980 KB
11_rand15.txt AC 33 ms 988 KB
11_rand16.txt AC 23 ms 1052 KB
11_rand17.txt AC 24 ms 924 KB
11_rand18.txt AC 23 ms 928 KB
11_rand19.txt AC 24 ms 984 KB
11_rand20.txt AC 24 ms 1004 KB
11_rand21.txt AC 25 ms 988 KB
11_rand22.txt AC 24 ms 932 KB
11_rand23.txt AC 24 ms 932 KB
11_rand24.txt AC 24 ms 1056 KB
21_rand00.txt AC 25 ms 944 KB
21_rand01.txt AC 25 ms 916 KB
21_rand02.txt AC 25 ms 984 KB
21_rand03.txt AC 25 ms 932 KB
21_rand04.txt AC 26 ms 992 KB
21_rand05.txt AC 28 ms 1020 KB
21_rand06.txt AC 27 ms 1052 KB
21_rand07.txt AC 27 ms 988 KB
21_rand08.txt AC 26 ms 988 KB
21_rand09.txt AC 29 ms 1056 KB
21_rand10.txt AC 26 ms 1012 KB
21_rand11.txt AC 26 ms 1004 KB
21_rand12.txt AC 26 ms 1016 KB
21_rand13.txt AC 26 ms 1008 KB
21_rand14.txt AC 26 ms 988 KB
21_rand15.txt AC 26 ms 1052 KB
21_rand16.txt AC 33 ms 936 KB
21_rand17.txt AC 27 ms 984 KB
21_rand18.txt AC 25 ms 1008 KB
21_rand19.txt AC 25 ms 928 KB
21_rand20.txt AC 25 ms 988 KB
21_rand21.txt AC 24 ms 984 KB
21_rand22.txt AC 25 ms 932 KB
21_rand23.txt AC 27 ms 1012 KB
21_rand24.txt AC 28 ms 940 KB
31_rand00.txt AC 28 ms 988 KB
31_rand01.txt AC 32 ms 940 KB
31_rand02.txt AC 33 ms 1052 KB
31_rand03.txt AC 32 ms 988 KB
31_rand04.txt AC 29 ms 992 KB
31_rand05.txt AC 33 ms 1060 KB
31_rand06.txt AC 31 ms 1004 KB
31_rand07.txt AC 29 ms 1016 KB
31_rand08.txt AC 34 ms 1008 KB
31_rand09.txt AC 33 ms 1008 KB
31_rand10.txt AC 27 ms 1008 KB
31_rand11.txt AC 33 ms 992 KB
31_rand12.txt AC 31 ms 988 KB
31_rand13.txt AC 39 ms 1004 KB
31_rand14.txt AC 26 ms 928 KB
31_rand15.txt AC 33 ms 940 KB
31_rand16.txt AC 32 ms 940 KB
31_rand17.txt AC 28 ms 1000 KB
31_rand18.txt AC 31 ms 1016 KB
31_rand19.txt AC 29 ms 1020 KB
31_rand20.txt AC 26 ms 992 KB
31_rand21.txt AC 26 ms 1056 KB
31_rand22.txt AC 29 ms 988 KB
31_rand23.txt AC 29 ms 864 KB
31_rand24.txt AC 29 ms 1056 KB
41_rand00.txt AC 768 ms 1324 KB
41_rand01.txt AC 425 ms 1328 KB
41_rand02.txt AC 846 ms 1568 KB
41_rand03.txt AC 455 ms 1196 KB
41_rand04.txt AC 562 ms 1192 KB
41_rand05.txt AC 221 ms 944 KB
41_rand06.txt AC 41 ms 988 KB
41_rand07.txt AC 686 ms 1452 KB
41_rand08.txt AC 344 ms 1064 KB
41_rand09.txt AC 680 ms 1448 KB
41_rand10.txt AC 910 ms 1460 KB
41_rand11.txt AC 816 ms 1452 KB
41_rand12.txt AC 698 ms 1460 KB
41_rand13.txt AC 743 ms 1448 KB
41_rand14.txt AC 563 ms 1452 KB
41_rand15.txt AC 340 ms 1244 KB
41_rand16.txt AC 737 ms 1324 KB
41_rand17.txt AC 422 ms 1192 KB
41_rand18.txt AC 27 ms 1056 KB
41_rand19.txt AC 26 ms 992 KB
41_rand20.txt AC 26 ms 932 KB
41_rand21.txt AC 25 ms 1056 KB
41_rand22.txt AC 26 ms 864 KB
41_rand23.txt AC 1253 ms 7720 KB
41_rand24.txt AC 1281 ms 7724 KB