All pastes #497418 Raw Edit

Stuff

public text v1 · immutable
·published 2007-05-19 20:57 UTC
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;
}