1. 

/**
* Angewandte Mathematik, SS09, IFB 2C
* ACM Problem #11152 - (Colourful Flowers)
* http://icpcres.ecs.baylor.edu/onlinejudge/index.php?option=com_onlinejudge&Itemid=8&category=23&page=show_problem&problem=2093
*
*
* @author Fabian Seidl
* @author Marcel Sachse
* @version 1.0, 27.04.2009
*
* Status : Accepted
* Runtime: 1.760
*/

import java.io.BufferedInputStream;
import java.util.Scanner;


public class Main {

public static void main(String[] args) {

BufferedInputStream bin = new BufferedInputStream(System.in);
Scanner scanner = new Scanner(bin);
double a=0;
double b=0;
double c=0;

double sunflowers=0;
double violets=0;
double roses=0;

double smallCi=0;
double bigCi=0;
double triangle=0;

while(scanner.hasNextInt())
{
a=scanner.nextInt();
b=scanner.nextInt();
c=scanner.nextInt();
// berechnen des Flächeninhaltes des Dreeckes mit dem satz des Heron
triangle=(Math.sqrt((a+b+c)*(a+b-c)*(b+c-a)*(c+a-b))/4.0);

// berechnen des Flächeninhaltes des äußeren Kreises
bigCi=Math.PI*(((a*b*c)/(4.0*triangle))*((a*b*c)/(4.0*triangle)));

// berechnen des Flächeninhaltes des inneren Kreises
smallCi=Math.PI*(((2.0*triangle)/(a+b+c))*((2.0*triangle)/(a+b+c)));

//runden auf 4 stellen
roses=smallCi;

//innerer keis vom dreieck abziehen und auf 4 stellen runden
violets=(triangle-smallCi);

//von dem äußeren Kreis das Dreieck abzeihen und auf 4 stellen runden
sunflowers=(bigCi-triangle);

//Die drei werte ausgeben(sunflowers, violets, roses)
System.out.printf("%.4f %.4f %.4f\n",sunflowers,violets,roses);

sunflowers=0;
violets=0;
roses=0;
}
}
}

2.

/**
* 11152 - Colourful Flowers
*
* Studiengruppe: IFB2C
*
* Robert Reichart
* Elvin Uzeirovic
* Martin Pesl
*
* Run Time Submission Date
* 1.810 2009-04-27 14:29:18
*/

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
public static void main(String... args) throws IOException{
Main a = new Main();
}

Main() throws IOException{
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
String line;
while((line = input.readLine()) != null){
String[] splited = line.split(" ");
int a = Integer.parseInt(splited[0]);
int b = Integer.parseInt(splited[1]);
int c = Integer.parseInt(splited[2]);


double alpha = Math.acos((b*b+c*c-a*a)/(2.0*b*c));
double beta = Math.acos((a*a+c*c-b*b)/(2.0*a*c));
double gamma = Math.acos((a*a+b*b-c*c)/(2.0*a*b));

double ur = a/(2*Math.sin(alpha));
double ir = 4*ur*Math.sin(alpha/2)*Math.sin(beta/2)*Math.sin(gamma/2);

double Ad = a*(c*Math.sin(beta)*0.5);
double Ai = ir*ir*Math.PI;

double tmp = ((ur*ur*Math.PI)-Ad);
tmp *= 10000;
tmp = Math.round(tmp);
tmp /= 10000;

System.out.printf("%.4f " ,tmp);

tmp = Ad-Ai;
tmp *= 10000;
tmp = Math.round(tmp);
tmp /= 10000;

System.out.printf("%.4f " ,tmp);

tmp = Ai;
tmp *= 10000;
tmp = Math.round(tmp);
tmp /= 10000;

System.out.printf("%.4f" ,tmp);
System.out.println();

}
}

}