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;
}
'''