蒟蒻代码,82分求助!请大佬看看
查看原帖
蒟蒻代码,82分求助!请大佬看看
601527
zhuzl009楼主2023/3/25 10:44
#include <iostream>
#include <set>
#include <map>

using namespace std;

typedef pair<int, int> pi;
const double Max = 100005.0, Min = -100005.0;

set<pi> se;
int n;



pi l = {Min, Max}, h = {Max, Min};

void fmid(pair<double, double> &mid) {
	mid.first = (l.first - h.first) / 2.0 + h.first;
	mid.second = (l.second - h.second) / 2.0 + h.second;
}

bool fp(int x1, int y1, double x2, int y2) {
	if ( se.count({ (int)(x2 - (x1 - x2)), (int)(y2 - (y1 - y2)) }))
		return true;
	else
		return false;
}

int main() {
	scanf ("%d", &n);
	for (int i = 1; i <= n; i ++) {
		int a, b;
		scanf ("%d %d", &a, &b);
		se.insert({a, b});
		if (h.second <= b) {
			if (h.second < b)
				h = {a, b};
			else { //h.second == b
				if (h.first > a)
					h.first = a;
			}
		}
		if (l.second >= b) {
			if (l.second > b)
				l = {a, b};
			else { //h.second == b
				if (l.first < a)
					l.first = a;
			}
		}
	}
	pair<double, double> mid;
	fmid(mid);

	for (auto it : se) {
		if (!fp(it.first, it.second, mid.first, mid.second)) {
			printf ("This is a dangerous situation!");
			return 0;
		}
	}

	printf ("V.I.P. should stay at (%.1f,%.1f).", mid.first, mid.second);
	return 0;
}
2023/3/25 10:44
加载中...