Witam , próbuję rozwiązać zadanie z byłej olimpiady informatycznej. Tresc nie jest tu wazna, fragment ktory zamieszcze jest jedynie wycinkiem kodu, ale wiem na 100% ze to on nie dziala. Problem przedstawia sie tak ze program dla wiekszosci testow daje poprawne odpowiedzi, jednak czasami pojawia sie komunikat :"process exited duo to signal 11 c++". Chciałbym wiedziec gdzie w kodzie pojawia sie blad, poniewaz wydaje mi sie ze wszystko powinno dzialac bez zarzutu. Prawdopobnie blad znajduje sie w funkcji "Funkcja", ale pewien nie jestem. Z góry dzieki, ponizej zamieszczam kod:
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
struct wektor
{
double x;
double y;
};
bool Funkcja(wektor a, wektor b)
{
if(a.y==0) return 1;
if(b.y==0) return 0;
else return ((a.x/a.y)>(b.x/b.y));
}
int main()
{
long long wynik=0;
long long x,y;
x=0; y=0;
int n;
cin>>n;
wektor * lista;
lista=new wektor[n];
for(int i=0;i<n;i++)
{
cin>>lista[i].x;
cin>>lista[i].y;
}
wektor * pomoc;
pomoc=new wektor[n];
for(int i=0;i<n;i++)
{
pomoc[i].x=lista[i].x;
pomoc[i].y=lista[i].y;
}
for(int i=0;i<n;i++)
{
if(pomoc[i].y<0 || (pomoc[i].y==0 && pomoc[i].x<0))
{
x+=pomoc[i].x;
y+=pomoc[i].y;
pomoc[i].x=pomoc[i].x*(-1);
pomoc[i].y=pomoc[i].y*(-1);
}
if(x*x+y*y>wynik) wynik=x*x+y*y;
}
wektor d;
vector <wektor> a;
for(int i=0;i<n;i++)
{
if(pomoc[i].x>0)
{
d.x=pomoc[i].x;
d.y=pomoc[i].y;
a.push_back(d);
}
}
sort(a.begin(),a.end(),Funkcja);
cout<<wynik;
return 0;
}