Aiuto Art Gallery: output non corretto

Ciao a tutti,
sto provando a risolvere gallery ma il mio codice prende 65/100.
La logica del mio programma è ordinare tutti i punti in base all’ascissa.
Poi suppongo che esista un asse di simmetria symmetryX e verifico se è uguale per ogni coppia di punti. Inoltre controllo anche che le ordinate di ogni coppia di punti siano uguali.

#include <bits/stdc++.h>
using namespace std;

struct Punto
{
	int x;
	int y;
	bool operator<(const Punto &other)const
	{
		return x < other.x;
	}
};

int main()
{
	int N;
	cin>>N;
	vector<Punto> points(N);
	for(int i = 0; i < N; i++)
	{
		int x, y;
		cin>>x>>y;
		points[i] = {x*2, y*2};
	}	
	
	string ans = "YES";
	sort(points.begin(), points.end());
	bool isOk = true;
	int symmetryX;
	if(N % 2 == 0)
		symmetryX = (points[0].x + points[N-1].x) / 2;
	else
		symmetryX = points[N/2].x;
	
	int l, r;
	for(l = 0, r = N - 1; l < r; l++, r--)
	{
		int currentX = (points[l].x + points[r].x) / 2;	
		
		if(currentX != symmetryX or points[l].y != points[r].y)
		{
			isOk = false;
			break;
		}
	}
	if(!isOk)
		ans = "NO";
	
	cout<<ans;
	return 0;
}
'''

Se hai più punti alla stessa X non è chiaro come li ordini, di conseguenza invertendo due punti che hanno la stessa ascissa potresti ottenere un ordinamento valido o viceversa

1 Mi Piace

Grazie mille non ci avevo pensato. Proverò a sistemarlo

1 Mi Piace