rendered paste body/* Bartosz Kula bartosz_kula 4 109215 */
/**********************************************************************
* Project : SPOJ PZPI06_3 (c) copyright
* Org : Gdansk Univeristy of Technology / ETI / group 4
* File :
* Author : student / Bartosz Kula / 109215 / bartosz_kula(at)o2.pl
* Date : 30.03.2007
* About : Ogrodzenia
*----------------------------------------------------------------------
* History:
* ---
* Todo:
* ---
***********************************************************************/
#include <stdio.h>
#define PI 3.1415926535897932384626433
//---------------ZMIENNE-GLOBALNE------------------
long double wynik=0;
long double odleglosc=0,odleglosc_poprzedni=0,promien=0,suma_promieni=0;
//-------------------------------------------------
int ogrodzenie(int domow, long int *domy)
{
int i=0;
for(i=1;i<=domow;i++)
{
odleglosc = domy[i]-domy[i-1];
if(i == domow)
{
promien = odleglosc_poprzedni;
suma_promieni += promien;
break;
}
else
promien = odleglosc;
if(odleglosc_poprzedni < promien && i!=1)
promien = odleglosc_poprzedni;
odleglosc_poprzedni = odleglosc-promien;
suma_promieni += promien;
}
return wynik = 2*suma_promieni*PI;
}
void qsort(long int *T, long int Lo, long int Hi)
{
long int i,j;
long int x;
x = T[(Lo+Hi)/2];
i = Lo;
j = Hi;
do
{
while (T[i] < x) ++i;
while (T[j] > x) --j;
if (i<=j)
{
int tmp = T[i];
T[i] = T[j];
T[j] = tmp;
++i; --j;
}
} while(i < j);
if (Lo < j) qsort(T, Lo, j);
if (Hi > i) qsort(T, i, Hi);
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif ONLINE_JUDGE
//------------------ZMIENNE------------------------
long int test,i,domow;
long int domy[100009];
//-------------------------------------------------
scanf("%d\n", &test);
while(test)
{
scanf("%d", &domow);
getchar();
for(i=0; i<domow; i++)
scanf("%d", &domy[i]);
getchar();
qsort( domy, 0, domow-1 );
ogrodzenie(domow, domy);
printf("%0.2f\n", wynik);
odleglosc=0,odleglosc_poprzedni=0,promien=0,suma_promieni=0;
test--;
}
return 0;
}