#include <bits/stdc++.h>
using namespace std;
const double pi=3.14159265359;
struct data
{
int dd,mm,yy,hh,mn,check;
double lat,lon,dist;
long long num;
};
int check(data d[],data key,int n,int j)
{
int i;
for(i=0;i<n;i++)
{
if(key.num==d[i].num&&i!=j)
{
if(key.yy>d[i].yy)
continue;
else if(key.yy==d[i].yy&&key.mm>d[i].mm)
continue;
else if(key.yy==d[i].yy&&key.mm==d[i].mm&&key.dd>d[i].dd)
continue;
else if(key.yy==d[i].yy&&key.mm==d[i].mm&&key.dd==d[i].dd&&key.hh>d[i].hh)
continue;
else if(key.yy==d[i].yy&&key.mm==d[i].mm&&key.dd==d[i].dd&&key.hh==d[i].hh&&key.mn>d[i].mn)
continue;
else
return 0;
}
}
return 1;
}
double hav(data d1,double lat,double lon)
{
double d;
d=2*6378.137*asin(sqrt(pow(sin((d1.lat-lat)/2*pi/180),2) +cos(d1.lat*pi/180)*cos(lat*pi/180)*pow(sin((d1.lon-lon)/2*pi/180),2)));
return d;
}
int main() {
double lat,lon,r;
char ch;
int i;
cin>>lat>>ch>>lon;
cin>>r;
data d[50000];
char str[100];
cin>>str;
int x=1,n=0,j,k;
do
{
x=scanf("%d/%d/%d %d:%d,%lf,%lf,%lld",&d[n].mm,&d[n].dd,&d[n].yy,&d[n].hh,&d[n].mn,&d[n].lat,&d[n].lon,&d[n].num);
//cout<<x;
n++;
}while(x!=-1);
// cout<<d[0].lat<<" "<<d[0].lon<<" "<<d[0].num;
n--;
for(i=0;i<n;i++)
{
d[i].dist=hav(d[i],lat,lon);
if(d[i].dist<r&&check(d,d[i],n,i))
d[i].check=1;
else
d[i].check=0;
}
//SORT
/* for (i = 0; i < n; i++)
for (j = 0; j < (n-i-1); j++)
{
if(d[j].dist>d[j+1].dist)
{
data temp;
temp=d[j];
d[j]=d[j+1];
d[j+1]=temp;
}
}*/
data key;
for (i = 1; i < n; i++)
{
key = d[i];
j = i-1;
while (j >= 0 && d[j].dist > key.dist)
{
d[j+1] = d[j];
j = j-1;
}
d[j+1] = key;
}
// cout<<d[0].num<<" "<<d[0].dist;
if(d[0].dist<r&&d[0].check)
cout<<d[0].num;
for(i=1;d[i].dist<r;i++)
{
if(d[i].check)
cout<<","<<d[i].num;
}
cout<<endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGRvdWJsZSBwaT0zLjE0MTU5MjY1MzU5OwkKCiAKc3RydWN0IGRhdGEKICAgIHsKICAgICBpbnQgZGQsbW0seXksaGgsbW4sY2hlY2s7CiAgICAgZG91YmxlIGxhdCxsb24sZGlzdDsKICAgIGxvbmcgbG9uZyBudW07Cn07CiAKaW50IGNoZWNrKGRhdGEgZFtdLGRhdGEga2V5LGludCBuLGludCBqKQp7CglpbnQgaTsKCWZvcihpPTA7aTxuO2krKykKCXsKCQlpZihrZXkubnVtPT1kW2ldLm51bSYmaSE9aikKCQkgewoJCSAJaWYoa2V5Lnl5PmRbaV0ueXkpCgkJIAkgY29udGludWU7CgkJIAkgZWxzZSBpZihrZXkueXk9PWRbaV0ueXkmJmtleS5tbT5kW2ldLm1tKQoJCSAJICBjb250aW51ZTsKCQkgCSAgZWxzZSBpZihrZXkueXk9PWRbaV0ueXkmJmtleS5tbT09ZFtpXS5tbSYma2V5LmRkPmRbaV0uZGQpCgkJIAkgICBjb250aW51ZTsKCQkgCSAgIGVsc2UgaWYoa2V5Lnl5PT1kW2ldLnl5JiZrZXkubW09PWRbaV0ubW0mJmtleS5kZD09ZFtpXS5kZCYma2V5LmhoPmRbaV0uaGgpCgkJIAkgICAgY29udGludWU7CgkJIAkgICAgZWxzZSBpZihrZXkueXk9PWRbaV0ueXkmJmtleS5tbT09ZFtpXS5tbSYma2V5LmRkPT1kW2ldLmRkJiZrZXkuaGg9PWRbaV0uaGgmJmtleS5tbj5kW2ldLm1uKQoJCSAJICAgIGNvbnRpbnVlOwoJCSAJICAgIGVsc2UKCQkgCSAgICByZXR1cm4gMDsKCQkgfQoJCQoJfQoJcmV0dXJuIDE7CgkKfQogCmRvdWJsZSBoYXYoZGF0YSBkMSxkb3VibGUgbGF0LGRvdWJsZSBsb24pCnsKICAgIGRvdWJsZSBkOwogICAgZD0yKjYzNzguMTM3KmFzaW4oc3FydChwb3coc2luKChkMS5sYXQtbGF0KS8yKnBpLzE4MCksMikgK2NvcyhkMS5sYXQqcGkvMTgwKSpjb3MobGF0KnBpLzE4MCkqcG93KHNpbigoZDEubG9uLWxvbikvMipwaS8xODApLDIpKSk7CiAgICByZXR1cm4gZDsKfQppbnQgbWFpbigpIHsKICAgIGRvdWJsZSBsYXQsbG9uLHI7CiAgICBjaGFyIGNoOwogICAgaW50IGk7CiAgICBjaW4+PmxhdD4+Y2g+PmxvbjsKICAgIGNpbj4+cjsKICAgIGRhdGEgZFs1MDAwMF07CiAgICBjaGFyIHN0clsxMDBdOwogICAgY2luPj5zdHI7CiAKICAgIGludCB4PTEsbj0wLGosazsKIAogICAgZG8KICAgewogICAgICAgeD1zY2FuZigiJWQvJWQvJWQgJWQ6JWQsJWxmLCVsZiwlbGxkIiwmZFtuXS5tbSwmZFtuXS5kZCwmZFtuXS55eSwmZFtuXS5oaCwmZFtuXS5tbiwmZFtuXS5sYXQsJmRbbl0ubG9uLCZkW25dLm51bSk7CiAgICAgICAvL2NvdXQ8PHg7CiAgICAgICAgbisrOwogCiAgICB9d2hpbGUoeCE9LTEpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3V0PDxkWzBdLmxhdDw8IiAiPDxkWzBdLmxvbjw8IiAiPDxkWzBdLm51bTsKICAgIG4tLTsKIAogCiAgICBmb3IoaT0wO2k8bjtpKyspCiAgICB7CiAgICAgICAgZFtpXS5kaXN0PWhhdihkW2ldLGxhdCxsb24pOwogICAgICAgIGlmKGRbaV0uZGlzdDxyJiZjaGVjayhkLGRbaV0sbixpKSkKICAgICAgICAgICAgZFtpXS5jaGVjaz0xOwogICAgICAgIGVsc2UKICAgICAgICAgICAgZFtpXS5jaGVjaz0wOwogCiAgICB9CiAKICAgIC8vU09SVAogICAgICAvKiBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQogICAgICBmb3IgKGogPSAwOyBqIDwgKG4taS0xKTsgaisrKQogICAgICAgewogICAgICAgICAgIGlmKGRbal0uZGlzdD5kW2orMV0uZGlzdCkKICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICBkYXRhIHRlbXA7CiAgICAgICAgICAgICAgIHRlbXA9ZFtqXTsKICAgICAgICAgICAgICAgZFtqXT1kW2orMV07CiAgICAgICAgICAgICAgIGRbaisxXT10ZW1wOwogICAgICAgICAgIH0KICAgICAgICAgfSovCiAgICAgICAgIGRhdGEga2V5OwogICAgICAgICBmb3IgKGkgPSAxOyBpIDwgbjsgaSsrKQogICB7CiAgICAgICBrZXkgPSBkW2ldOwogICAgICAgaiA9IGktMTsKIAogICAgICAgCiAgICAgICB3aGlsZSAoaiA+PSAwICYmIGRbal0uZGlzdCA+IGtleS5kaXN0KQogICAgICAgewogICAgICAgICAgIGRbaisxXSA9IGRbal07CiAgICAgICAgICAgaiA9IGotMTsKICAgICAgIH0KICAgICAgIGRbaisxXSA9IGtleTsKICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3V0PDxkWzBdLm51bTw8IiAiPDxkWzBdLmRpc3Q7CiAgICBpZihkWzBdLmRpc3Q8ciYmZFswXS5jaGVjaykKICAgICBjb3V0PDxkWzBdLm51bTsKICAgIGZvcihpPTE7ZFtpXS5kaXN0PHI7aSsrKQogICAgeyAgICAKICAgIAlpZihkW2ldLmNoZWNrKQogICAgICAgIGNvdXQ8PCIsIjw8ZFtpXS5udW07CiAgICB9CiAgICBjb3V0PDxlbmRsOwogCiAKIAogICAgcmV0dXJuIDA7Cn0=
MTguOTc3ODk3Miw3Mi44MzIxOTgzCjEuMApEYXRlJmFtcDtUaW1lLExhdGl0dWRlLExvbmdpdHVkZSxQaG9uZU51bWJlcgoxMC8yMS8yMDE2IDEzOjM0LDE4LjkxMjg3NSw3Mi44MjIzMTgsOTAyMDMyMDEwMAoxMC8yMS8yMDE2IDEwOjM1LDE4Ljk1ODIyMzMsNzIuODI3NTg0NSw5MDIwMzIwMDI0CjEwLzIxLzIwMTYgMTU6MjAsMTguOTUxNjk5ODIsNzIuODM1MjU2MDQsOTAyMDMyMDA0NwoxMC8yMS8yMDE2IDE1OjIzLDE4Ljk1MTMwNDgsNzIuODM0MzM4OCw5MDIwMzU3OTgwCjEwLzIxLzIwMTYgMTU6MjMsMTguOTUxMzA0OCw3Mi44MzQzMzg4LDkwMjAzNTc5NjIKMTAvMjEvMjAxNiAxNToyOCwxOC45NTQ4NjUyLDcyLjgzMzI0NDMsOTAyMDMyMDAyNwoxMC8yMS8yMDE2IDE0OjAzLDE4LjkxNzk3ODQsNzIuODI3OTMwNiw5MDIwMzU3OTcyCjEwLzIxLzIwMTYgMTQ6MDMsMTguOTE3OTc4NCw3Mi44Mjc5MzA2LDkwMjAzNTc5NTkKMTAvMjEvMjAxNiAwOTo1MiwxOC45NzUyMzEyMyw3Mi44MzQ5NDg5NSw5MDIwMzIwMDA3CjEwLzIxLzIwMTYgMDk6NDQsMTguOTcxNTkzMiw3Mi44MzgzOTkyLDkwMjAzNTc2MDcKMTAvMjEvMjAxNiAwOTo0NCwxOC45NzE1OTMyLDcyLjgzODM5OTIsOTAyMDM1NzU5MwoxMC8yMS8yMDE2IDA5OjQ0LDE4Ljk3MTU5MzIsNzIuODM4Mzk5Miw5MDIwMzU3NTg0CjEwLzIxLzIwMTYgMTQ6NTcsMTguOTM0Mzg4MjYsNzIuODI3MDQ0OTksOTAyMDMyMDAxMQoxMC8yMS8yMDE2IDA5OjU2LDE4Ljk3NTk2NTE0LDcyLjgzMjcwNzIsOTAyMDMyMDA0NQoxMC8yMS8yMDE2IDA4OjMzLDE4Ljk4MTE5MjksNzIuODM1MzIwMiw5MDIwMzIwMDg0CjEwLzIxLzIwMTYgMTM6MjcsMTguOTE1OTI2NSw3Mi44MjQ1OTg5LDkwMjAzNTc4OTYKMTAvMjEvMjAxNiAxMzowOSwxOC45MDc3MzQ3LDcyLjgwNzYyMDEsOTAyMDMyMDA5NAoxMC8yMS8yMDE2IDEwOjUyLDE4Ljk3NTIzMDAzLDcyLjgzNDk0ODY1LDkwMjAzMjAwMDc=
18.9778972,72.8321983
1.0
Date&Time,Latitude,Longitude,PhoneNumber
10/21/2016 13:34,18.912875,72.822318,9020320100
10/21/2016 10:35,18.9582233,72.8275845,9020320024
10/21/2016 15:20,18.95169982,72.83525604,9020320047
10/21/2016 15:23,18.9513048,72.8343388,9020357980
10/21/2016 15:23,18.9513048,72.8343388,9020357962
10/21/2016 15:28,18.9548652,72.8332443,9020320027
10/21/2016 14:03,18.9179784,72.8279306,9020357972
10/21/2016 14:03,18.9179784,72.8279306,9020357959
10/21/2016 09:52,18.97523123,72.83494895,9020320007
10/21/2016 09:44,18.9715932,72.8383992,9020357607
10/21/2016 09:44,18.9715932,72.8383992,9020357593
10/21/2016 09:44,18.9715932,72.8383992,9020357584
10/21/2016 14:57,18.93438826,72.82704499,9020320011
10/21/2016 09:56,18.97596514,72.8327072,9020320045
10/21/2016 08:33,18.9811929,72.8353202,9020320084
10/21/2016 13:27,18.9159265,72.8245989,9020357896
10/21/2016 13:09,18.9077347,72.8076201,9020320094
10/21/2016 10:52,18.97523003,72.83494865,9020320007