#define MAX(a,b) ((a)>(b)?(a):(b))
#define MIN(a,b) ((a)<(b)?(a):(b))
int cmp(const void* a,const void* b){
return *(int*)a > *(int*)b;
}
int findRadius(int* houses, int housesSize, int* heaters, int heatersSize){
int i=0,j=0,radius=1000000001,min,minRadius=0;
qsort(houses,housesSize,sizeof(int),cmp);
qsort(heaters,heatersSize,sizeof(int),cmp);
while(i<housesSize && j<heatersSize)
{
min = (j>0)? MIN(abs(heaters[j]-houses[i]),abs(heaters[j-1]-houses[i])): abs(heaters[j]-houses[i]);
if (min < radius) radius=min;
if (houses[i] <= heaters[j])
{
if (houses[i]==heaters[j])
j++;
if (min > minRadius) minRadius=min;
i++;
radius=1000000001;
}
else
j++;
}
if (j==heatersSize && i!=housesSize && houses[housesSize-1] - heaters[j-1] > minRadius)
minRadius=houses[housesSize-1] - heaters[j-1];
return minRadius;
}