1.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

/**
* Angewandte Mathematik, SS11
* Problem: 542 - France '98
* Link: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=7&page=show_problem&problem=483
*
* @author Unverzart Michael
* @author Wurth Manuel
* @version 1.0, 27/5/2011
*
* Method : Ad-Hoc
* Status : Accepted
* Runtime: 0.132
*/

public class Main {

public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String country[] = new String[16];
double probability[][] = new double[16][16];
double win[][] = new double[16][4];
for(int i = 0;i<16; i++) country[i] = reader.readLine();
for(int i = 0;i<16; i++) {
StringTokenizer st = new StringTokenizer(reader.readLine());
for(int j = 0;j<16; j++) probability[i][j] = new Double(st.nextToken()) /100;
}
//Achtelfinale
for(int i=0;i<16;i++){
if(i%2==0) {
win[i][0]=probability[i][i+1];
}
else {
win[i][0]=probability[i][i-1];
}
}
//Viertelfinale
for(int i=0;i<16;i++){
if((i/2)%2==0) {
for(int j=0;j<2;j++) win[i][1] += win[j+(i/2+1)*2][0]*probability[i][j+(i/2+1)*2];
win[i][1]*=win[i][0];
}
else{
for(int j=0;j<2;j++) win[i][1] += win[j+(i/2-1)*2][0]*probability[i][j+(i/2-1)*2];
win[i][1]*=win[i][0];
}
}
//Halbfinale
for(int i=0;i<16;i++){
if((i/4)%2==0){
for(int j=0;j<4;j++) win[i][2]+=win[j+(i/4+1)*4][1]*probability[i][j+(i/4+1)*4];
win[i][2]*=win[i][1];
}
else{
for(int j=0;j<4;j++) win[i][2]+=win[j+(i/4-1)*4][1]*probability[i][j+(i/4-1)*4];
win[i][2]*=win[i][1];
}
}
//Finale
for(int i=0;i<16;i++){
if((i/8)%2==0){
for(int j=0;j<8;j++) win[i][3]+=win[j+(i/8+1)*8][2]*probability[i][j+(i/8+1)*8];
win[i][3]*=win[i][2];
}
else{
for(int j=0;j<8;j++) win[i][3]+=win[j+(i/8-1)*8][2]*probability[i][j+(i/8-1)*8];
win[i][3]*=win[i][2];
}
}
for(int i = 0;i<16; i++) System.out.format("%-10s p=%.2f%%\n", country[i], (win[i][3]*100));
}
}

2.

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

/**
* Angewandte Mathematik, SS11
* Problem: 542 - France 98
* Link: http://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=483
*
* @author Benedikt Z¨nnchen
* @author Erik Wenzel
* @version 1.0, 29/04/2011
*
* Method : Ad hoc
* Status : Accepted
* Runtime: 0.132
*
* Erkl¦rung: Wir nehmen an das p[row][col] die Wahrscheinlichkeit ist das das team row in Runde col kommt.
* In Runde 0 kommt jeder da sich alle zum Turnier qualifiziert haben. Wenn wir nun annehmen das winProb[i][j]
* die Wahrscheinlichkeit ist das das Team i gegen j gewinnt so ergibt sich:
* p[i][j] = p[i][j-1] * [Summe ¾ber alle spielenden Teams, k] (p[k][j-1]*winProb[i][k]) !!!
*/
public class Main
{
static double[][] winProb = new double[16][16];
static double[][] p = new double[16][5];
static String[] counties = new String[16];

public static void main(String[] args) throws IOException
{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));


// L¦nder einlesen
for(int i = 0; i < counties.length; i++)
{
counties[i] = reader.readLine();
}

for(int row = 0; row < winProb.length; row++)
{
int col = 0;
for (String prob : reader.readLine().split(" "))
{
winProb[row][col] = Double.parseDouble(prob)/100.0;
col++;
}
}

// erste runde
for (int i=0;i<16;i+=2 )
{
p[i][0] = winProb[i][i+1];
p[i+1][0] = winProb[i+1][i];
}

// zweite runde
calcRound(1);

// dritte runde
calcRound(2);

// vierte und letzte runde
calcRound(3);

// formatierte Ausgabe
for(int i = 0; i < counties.length; i++)
{
System.out.printf("%-10s p=%.2f%%\n",counties[i],p[i][3]*100.0);
}
}

/**
* Kalkuliert eine weitere runde im Turnierplan
* @param round runde > 0
*/
public static void calcRound(int round)
{
for(int k = 0; k < 16; k++)
{
for(int j = 0; j < 16; j++)
{
if(!(j==k))
{
int div1 = 1 << round;
int div2 = div1 << 1;
if (k/div1 != j/div1 && k/div2 == j/div2)
{
p[k][round] += p[k][round-1]*p[j][round-1]*winProb[k][j];
}
}
}
}
}
}

/*
Brazil
Chile
Nigeria
Denmark
Holland
Yugoslavia
Argentina
England
Italy
Norway
France
Paraguay
Germany
Mexico
Romania
Croatia
50 65 50 60 55 50 50 65 45 55 40 55 40 55 50 50
35 50 35 45 40 35 35 50 30 40 25 40 25 40 35 35
50 65 50 60 55 50 50 65 45 55 40 55 40 55 50 50
40 55 40 50 45 40 40 55 35 45 30 45 30 45 40 40
45 60 45 55 50 45 45 60 40 50 35 50 35 50 45 45
50 65 50 60 55 50 50 65 45 55 40 55 40 55 50 50
50 65 50 60 55 50 50 65 45 55 40 55 40 55 50 50
35 50 35 45 40 35 35 50 30 40 25 40 25 40 35 35
55 70 55 65 60 55 55 70 50 60 45 60 45 60 55 55
45 60 45 55 50 45 45 60 40 50 35 50 35 50 45 45
60 75 60 70 65 60 60 75 55 65 50 65 50 65 60 60
45 60 45 55 50 45 45 60 40 50 35 50 35 50 45 45
60 75 60 70 65 60 60 75 55 65 50 65 50 65 60 60
45 60 45 55 50 45 45 60 40 50 35 50 35 50 45 45
50 65 50 60 55 50 50 65 45 55 40 55 40 55 50 50
50 65 50 60 55 50 50 65 45 55 40 55 40 55 50 50

*/