Źle obliczasz odległość: suma[i]=abs(a[i])+abs(b[i]), używasz metryki taksówkowej, a miałeś użyć metryki euklidesowej, to znaczy skorzystać z twierdzenia Pitagorasa (nie musisz liczyć pierwiastka).
I nie powinieneś programu zrobić za pomocą klas, tylko przy użyciu struktury, np.
struct punkt
{
std::string nazwa;
int x, y;
};
//albo, jeśli nie chcesz ciągle obliczać odległości podczas sortowania
struct punkt
{
std::string nazwa;
int x, y;
double odleglosc;
};
i struktury te trzymać w wektorze std::vector<punkt>, bo widzisz, takie coś:
int ile;
cin >> ile;
int a[ile];
to nie jest prawidłowe C++.
Poza tym, brakuje ci #include <string>