Mój program zwraca dokładnie takie same wyniki jak wyjście w przykładach na SPOJu, jednak sędzia zwraca mi błędną odpowiedź. Proszę o wskazanie miejsca, gdzie szukać przyczyny.
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int ile;
cin>> ile;
for (int i=0; i<ile; i++)
{
int n, p1,p2, tmp;
string tmp_name;
cin >> n;
int * x = new int [n];
int * y = new int [n];
string * nazwa = new string [n];
for (int j=0;j<n;j++)
{
cin >> nazwa[j]>> x[j]>>y[j];
}
for (int j=0;j<n;j++)
{
for (int k=0; k <n-1; k++)
{
p1= sqrt(pow(x[k],2)+pow(y[k],2));
p2=sqrt(pow(x[k+1],2)+pow(y[k+1],2));
if (p1>p2)
{
tmp =x[k];
x[k]=x[k+1];
x[k+1] = tmp;
tmp = y[k];
y[k]= y[k+1];
y[k+1]= tmp;
tmp_name = nazwa[k];
nazwa[k] = nazwa[k+1];
nazwa[k+1] = tmp_name;
}
}
}
for (int j=0; j<n; j++)
{
cout<<nazwa[j]<<" "<<x[j]<<" "<<y[j]<<endl;
}
delete [] x;
delete [] y;
delete [] nazwa;
}
return 0;
}
Każda uwaga będzie dla mnie cenna.