#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *, ...);
int scanf(char *, int *, ...);
int main(void) {
  int n, k, v, u, i = 0, pw[100], pl[100];
  float w;
  char vt[9], ut[9];
  char type[3] = {'s', 'p', 'r'};
  while (scanf("%d %d", &n, &k) == 2) {
    if (i != 0)
      printf("\n");
    for (i = 0; i < 100; i++) {
      pw[i] = 0;
      pl[i] = 0;
    }
    for (i = 0; i < k * n * (n - 1) / 2; i++) {
      scanf("%d %s %d %s", &v, vt, &u, ut);
      if (vt[0] == type[0] && ut[0] == type[0])
        ;
      else if (vt[0] == type[1] && ut[0] == type[1])
        ;
      else if (vt[0] == type[2] && ut[0] == type[2])
        ;
      else if (vt[0] == type[0]) {
        if (ut[0] == type[1]) {
          pw[v - 1]++;
          pl[u - 1]++;
        } else {
          pw[u - 1]++;
          pl[v - 1]++;
        }
      } else if (vt[0] == type[1]) {
        if (ut[0] == type[0]) {
          pw[u - 1]++;
          pl[v - 1]++;
        } else {
          pw[v - 1]++;
          pl[u - 1]++;
        }
      } else {
        if (ut[0] == type[0]) {
          pw[v - 1]++;
          pl[u - 1]++;
        } else {
          pw[u - 1]++;
          pl[v - 1]++;
        }
      }
    }
    for (i = 0; i < n; i++) {
      w = pw[i] + pl[i];
      if (w == 0)
        printf("-\n");
      else {
        w = pw[i] / w;
        printf("%.3f\n", w);
      }
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x360,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x18(%rbp)
mov    0xec0(%rip),%ax
mov    %ax,-0x359(%rbp)
mov    0xeb5(%rip),%al
mov    %al,-0x357(%rbp)
lea    0xea9(%rip),%rdi
lea    -0x8(%rbp),%rsi
lea    -0xc(%rbp),%rdx
mov    $0x0,%al
call   1040 <scanf@plt>
cmp    $0x2,%eax
jne    1546 <main+0x426>
cmpl   $0x0,-0x18(%rbp)
je     118a <main+0x6a>
lea    0xe93(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x18(%rbp)
cmpl   $0x64,-0x18(%rbp)
jge    11c7 <main+0xa7>
movslq -0x18(%rbp),%rax
movl   $0x0,-0x1b0(%rbp,%rax,4)
movslq -0x18(%rbp),%rax
movl   $0x0,-0x340(%rbp,%rax,4)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1191 <main+0x71>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
mov    %eax,-0x360(%rbp)
mov    -0xc(%rbp),%eax
imul   -0x8(%rbp),%eax
mov    -0x8(%rbp),%ecx
sub    $0x1,%ecx
imul   %ecx,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x360(%rbp),%eax
cmp    %ecx,%eax
jge    1495 <main+0x375>
lea    -0x34d(%rbp),%rdx
lea    -0x356(%rbp),%r8
lea    0xdf5(%rip),%rdi
lea    -0x10(%rbp),%rsi
lea    -0x14(%rbp),%rcx
mov    $0x0,%al
call   1040 <scanf@plt>
movsbl -0x34d(%rbp),%eax
movsbl -0x359(%rbp),%ecx
cmp    %ecx,%eax
jne    1254 <main+0x134>
movsbl -0x356(%rbp),%eax
movsbl -0x359(%rbp),%ecx
cmp    %ecx,%eax
jne    1254 <main+0x134>
jmp    1482 <main+0x362>
movsbl -0x34d(%rbp),%eax
movsbl -0x358(%rbp),%ecx
cmp    %ecx,%eax
jne    1285 <main+0x165>
movsbl -0x356(%rbp),%eax
movsbl -0x358(%rbp),%ecx
cmp    %ecx,%eax
jne    1285 <main+0x165>
jmp    147d <main+0x35d>
movsbl -0x34d(%rbp),%eax
movsbl -0x357(%rbp),%ecx
cmp    %ecx,%eax
jne    12b6 <main+0x196>
movsbl -0x356(%rbp),%eax
movsbl -0x357(%rbp),%ecx
cmp    %ecx,%eax
jne    12b6 <main+0x196>
jmp    1478 <main+0x358>
movsbl -0x34d(%rbp),%eax
movsbl -0x359(%rbp),%ecx
cmp    %ecx,%eax
jne    1350 <main+0x230>
movsbl -0x356(%rbp),%eax
movsbl -0x358(%rbp),%ecx
cmp    %ecx,%eax
jne    1319 <main+0x1f9>
mov    -0x10(%rbp),%eax
sub    $0x1,%eax
cltq
mov    -0x1b0(%rbp,%rax,4),%ecx
add    $0x1,%ecx
mov    %ecx,-0x1b0(%rbp,%rax,4)
mov    -0x14(%rbp),%eax
sub    $0x1,%eax
cltq
mov    -0x340(%rbp,%rax,4),%ecx
add    $0x1,%ecx
mov    %ecx,-0x340(%rbp,%rax,4)
jmp    134b <main+0x22b>
mov    -0x14(%rbp),%eax
sub    $0x1,%eax
cltq
mov    -0x1b0(%rbp,%rax,4),%ecx
add    $0x1,%ecx
mov    %ecx,-0x1b0(%rbp,%rax,4)
mov    -0x10(%rbp),%eax
sub    $0x1,%eax
cltq
mov    -0x340(%rbp,%rax,4),%ecx
add    $0x1,%ecx
mov    %ecx,-0x340(%rbp,%rax,4)
jmp    1473 <main+0x353>
movsbl -0x34d(%rbp),%eax
movsbl -0x358(%rbp),%ecx
cmp    %ecx,%eax
jne    13ea <main+0x2ca>
movsbl -0x356(%rbp),%eax
movsbl -0x359(%rbp),%ecx
cmp    %ecx,%eax
jne    13b3 <main+0x293>
mov    -0x14(%rbp),%eax
sub    $0x1,%eax
cltq
mov    -0x1b0(%rbp,%rax,4),%ecx
add    $0x1,%ecx
mov    %ecx,-0x1b0(%rbp,%rax,4)
mov    -0x10(%rbp),%eax
sub    $0x1,%eax
cltq
mov    -0x340(%rbp,%rax,4),%ecx
add    $0x1,%ecx
mov    %ecx,-0x340(%rbp,%rax,4)
jmp    13e5 <main+0x2c5>
mov    -0x10(%rbp),%eax
sub    $0x1,%eax
cltq
mov    -0x1b0(%rbp,%rax,4),%ecx
add    $0x1,%ecx
mov    %ecx,-0x1b0(%rbp,%rax,4)
mov    -0x14(%rbp),%eax
sub    $0x1,%eax
cltq
mov    -0x340(%rbp,%rax,4),%ecx
add    $0x1,%ecx
mov    %ecx,-0x340(%rbp,%rax,4)
jmp    146e <main+0x34e>
movsbl -0x356(%rbp),%eax
movsbl -0x359(%rbp),%ecx
cmp    %ecx,%eax
jne    1437 <main+0x317>
mov    -0x10(%rbp),%eax
sub    $0x1,%eax
cltq
mov    -0x1b0(%rbp,%rax,4),%ecx
add    $0x1,%ecx
mov    %ecx,-0x1b0(%rbp,%rax,4)
mov    -0x14(%rbp),%eax
sub    $0x1,%eax
cltq
mov    -0x340(%rbp,%rax,4),%ecx
add    $0x1,%ecx
mov    %ecx,-0x340(%rbp,%rax,4)
jmp    1469 <main+0x349>
mov    -0x14(%rbp),%eax
sub    $0x1,%eax
cltq
mov    -0x1b0(%rbp,%rax,4),%ecx
add    $0x1,%ecx
mov    %ecx,-0x1b0(%rbp,%rax,4)
mov    -0x10(%rbp),%eax
sub    $0x1,%eax
cltq
mov    -0x340(%rbp,%rax,4),%ecx
add    $0x1,%ecx
mov    %ecx,-0x340(%rbp,%rax,4)
jmp    146e <main+0x34e>
jmp    1473 <main+0x353>
jmp    1478 <main+0x358>
jmp    147d <main+0x35d>
jmp    1482 <main+0x362>
jmp    1487 <main+0x367>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    11ce <main+0xae>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1541 <main+0x421>
movslq -0x18(%rbp),%rax
mov    -0x1b0(%rbp,%rax,4),%eax
movslq -0x18(%rbp),%rcx
add    -0x340(%rbp,%rcx,4),%eax
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0x344(%rbp)
ff
movss  -0x344(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    14f7 <main+0x3d7>
jp     14f7 <main+0x3d7>
lea    0xb2a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    152e <main+0x40e>
movslq -0x18(%rbp),%rax
cvtsi2ssl -0x1b0(%rbp,%rax,4),%xmm0
ff ff
divss  -0x344(%rbp),%xmm0
ff
movss  %xmm0,-0x344(%rbp)
ff
movss  -0x344(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
lea    0xaf1(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
jmp    1533 <main+0x413>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    149c <main+0x37c>
jmp    1153 <main+0x33>
xor    %eax,%eax
add    $0x360,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x358,%rsp
lea    0xe98(%rip),%rdi
lea    0xc(%rsp),%rsi
lea    0x10(%rsp),%rdx
xor    %eax,%eax
call   1070 <scanf@plt>
cmp    $0x2,%eax
jne    133e <main+0x1ee>
lea    0x18(%rsp),%r12
lea    0x14(%rsp),%r13
lea    0x1e(%rsp),%r14
lea    0xe80(%rip),%r15
xor    %ebx,%ebx
jmp    11c1 <main+0x71>
nopl   0x0(%rax)
lea    0xe59(%rip),%rdi
lea    0xc(%rsp),%rsi
lea    0x10(%rsp),%rdx
xor    %eax,%eax
call   1070 <scanf@plt>
cmp    $0x2,%eax
jne    133e <main+0x1ee>
mov    %r15,%rbp
test   %ebx,%ebx
je     11d2 <main+0x82>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    $0x190,%edx
lea    0x1c0(%rsp),%rdi
xor    %esi,%esi
call   1060 <memset@plt>
mov    $0x190,%edx
lea    0x30(%rsp),%rdi
xor    %esi,%esi
call   1060 <memset@plt>
mov    0xc(%rsp),%eax
mov    0x10(%rsp),%ecx
imul   %eax,%ecx
lea    -0x1(%rax),%edx
imul   %ecx,%edx
cmp    $0x2,%edx
lea    0xdf4(%rip),%rbx
jl     12d0 <main+0x180>
xor    %r15d,%r15d
jmp    1263 <main+0x113>
cmp    $0x73,%al
mov    %r13,%rax
cmove  %r12,%rax
mov    %r12,%rcx
cmove  %r13,%rcx
movslq (%rax),%rax
addl   $0x1,0x1bc(%rsp,%rax,4)
01
movslq (%rcx),%rax
addl   $0x1,0x2c(%rsp,%rax,4)
add    $0x1,%r15d
mov    0xc(%rsp),%eax
mov    0x10(%rsp),%ecx
imul   %eax,%ecx
lea    -0x1(%rax),%edx
imul   %ecx,%edx
mov    %edx,%ecx
shr    $0x1f,%ecx
add    %edx,%ecx
sar    %ecx
cmp    %ecx,%r15d
jge    12d0 <main+0x180>
mov    %rbx,%rdi
mov    %r12,%rsi
lea    0x27(%rsp),%rdx
mov    %r13,%rcx
mov    %r14,%r8
xor    %eax,%eax
call   1070 <scanf@plt>
movzbl 0x27(%rsp),%ecx
movzbl 0x1e(%rsp),%eax
cmp    $0x73,%cl
jne    128e <main+0x13e>
cmp    $0x73,%al
je     1240 <main+0xf0>
cmp    $0x70,%cl
jne    1297 <main+0x147>
cmp    $0x70,%al
je     1240 <main+0xf0>
cmp    $0x72,%cl
jne    12a0 <main+0x150>
cmp    $0x72,%al
je     1240 <main+0xf0>
cmp    $0x70,%cl
je     12b5 <main+0x165>
cmp    $0x73,%cl
jne    121d <main+0xcd>
cmp    $0x70,%al
jmp    121f <main+0xcf>
cmp    $0x73,%al
mov    %r12,%rax
cmove  %r13,%rax
mov    %r13,%rcx
cmove  %r12,%rcx
jmp    122d <main+0xdd>
nopw   0x0(%rax,%rax,1)
xor    %ebx,%ebx
mov    %rbp,%r15
test   %eax,%eax
jle    11a0 <main+0x50>
lea    0xd2e(%rip),%rbp
jmp    1325 <main+0x1d5>
cs nopw 0x0(%rax,%rax,1)
xorps  %xmm0,%xmm0
cvtsi2ss %ecx,%xmm0
xorps  %xmm1,%xmm1
cvtsi2ss %eax,%xmm1
divss  %xmm0,%xmm1
xorps  %xmm0,%xmm0
cvtss2sd %xmm1,%xmm0
mov    %rbp,%rdi
mov    $0x1,%al
call   1050 <printf@plt>
add    $0x1,%rbx
movslq 0xc(%rsp),%rax
cmp    %rax,%rbx
jge    11a0 <main+0x50>
mov    0x1c0(%rsp,%rbx,4),%eax
mov    0x30(%rsp,%rbx,4),%ecx
add    %eax,%ecx
jne    12f0 <main+0x1a0>
mov    %r15,%rdi
call   1040 <puts@plt>
jmp    1313 <main+0x1c3>
xor    %eax,%eax
add    $0x358,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@__const.main.type = [3 x i8] c"spr"
@.str = [6 x i8] c"%d %d\00"
@.str.1 = [2 x i8] c"\0A\00"
@.str.2 = [12 x i8] c"%d %s %d %s\00"
@.str.3 = [3 x i8] c"-\0A\00"
@.str.4 = [6 x i8] c"%.3f\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca [100 x i32]
%8 = alloca [100 x i32]
%9 = alloca float
%10 = alloca [9 x i8]
%11 = alloca [9 x i8]
%12 = alloca [3 x i8]
store i32 0, i32* %1
store i32 0, i32* %6
%13 = bitcast [3 x i8]* %12 to i8*
br label %14
14: ; preds = %265, %0
%15 = call i32 (i8*, i32*, ...) @scanf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0), i32* %2, i32* %3)
%16 = icmp eq i32 %15, 2
br i1 %16, label %17, label %266
17: ; preds = %14
%18 = load i32, i32* %6
%19 = icmp ne i32 %18, 0
br i1 %19, label %20, label %22
20: ; preds = %17
%21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %22
22: ; preds = %20, %17
store i32 0, i32* %6
br label %23
23: ; preds = %33, %22
%24 = load i32, i32* %6
%25 = icmp slt i32 %24, 100
br i1 %25, label %26, label %36
26: ; preds = %23
%27 = load i32, i32* %6
%28 = sext i32 %27 to i64
%29 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 %28
store i32 0, i32* %29
%30 = load i32, i32* %6
%31 = sext i32 %30 to i64
%32 = getelementptr inbounds [100 x i32], [100 x i32]* %8, i64 0, i64 %31
store i32 0, i32* %32
br label %33
33: ; preds = %26
%34 = load i32, i32* %6
%35 = add nsw i32 %34, 1
store i32 %35, i32* %6
br label %23
36: ; preds = %23
store i32 0, i32* %6
br label %37
37: ; preds = %227, %36
%38 = load i32, i32* %6
%39 = load i32, i32* %3
%40 = load i32, i32* %2
%41 = mul nsw i32 %39, %40
%42 = load i32, i32* %2
%43 = sub nsw i32 %42, 1
%44 = mul nsw i32 %41, %43
%45 = sdiv i32 %44, 2
%46 = icmp slt i32 %38, %45
br i1 %46, label %47, label %230
47: ; preds = %37
%48 = getelementptr inbounds [9 x i8], [9 x i8]* %10, i64 0, i64 0
%49 = getelementptr inbounds [9 x i8], [9 x i8]* %11, i64 0, i64 0
%50 = call i32 (i8*, i32*, ...) @scanf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.2, i64 0, i64 0), i32* %4, i8* %48, i32* %5, i8* %49)
%51 = getelementptr inbounds [9 x i8], [9 x i8]* %10, i64 0, i64 0
%52 = load i8, i8* %51
%53 = sext i8 %52 to i32
%54 = getelementptr inbounds [3 x i8], [3 x i8]* %12, i64 0, i64 0
%55 = load i8, i8* %54
%56 = sext i8 %55 to i32
%57 = icmp eq i32 %53, %56
br i1 %57, label %58, label %67
58: ; preds = %47
%59 = getelementptr inbounds [9 x i8], [9 x i8]* %11, i64 0, i64 0
%60 = load i8, i8* %59
%61 = sext i8 %60 to i32
%62 = getelementptr inbounds [3 x i8], [3 x i8]* %12, i64 0, i64 0
%63 = load i8, i8* %62
%64 = sext i8 %63 to i32
%65 = icmp eq i32 %61, %64
br i1 %65, label %66, label %67
66: ; preds = %58
br label %226
67: ; preds = %58, %47
%68 = getelementptr inbounds [9 x i8], [9 x i8]* %10, i64 0, i64 0
%69 = load i8, i8* %68
%70 = sext i8 %69 to i32
%71 = getelementptr inbounds [3 x i8], [3 x i8]* %12, i64 0, i64 1
%72 = load i8, i8* %71
%73 = sext i8 %72 to i32
%74 = icmp eq i32 %70, %73
br i1 %74, label %75, label %84
75: ; preds = %67
%76 = getelementptr inbounds [9 x i8], [9 x i8]* %11, i64 0, i64 0
%77 = load i8, i8* %76
%78 = sext i8 %77 to i32
%79 = getelementptr inbounds [3 x i8], [3 x i8]* %12, i64 0, i64 1
%80 = load i8, i8* %79
%81 = sext i8 %80 to i32
%82 = icmp eq i32 %78, %81
br i1 %82, label %83, label %84
83: ; preds = %75
br label %225
84: ; preds = %75, %67
%85 = getelementptr inbounds [9 x i8], [9 x i8]* %10, i64 0, i64 0
%86 = load i8, i8* %85
%87 = sext i8 %86 to i32
%88 = getelementptr inbounds [3 x i8], [3 x i8]* %12, i64 0, i64 2
%89 = load i8, i8* %88
%90 = sext i8 %89 to i32
%91 = icmp eq i32 %87, %90
br i1 %91, label %92, label %101
92: ; preds = %84
%93 = getelementptr inbounds [9 x i8], [9 x i8]* %11, i64 0, i64 0
%94 = load i8, i8* %93
%95 = sext i8 %94 to i32
%96 = getelementptr inbounds [3 x i8], [3 x i8]* %12, i64 0, i64 2
%97 = load i8, i8* %96
%98 = sext i8 %97 to i32
%99 = icmp eq i32 %95, %98
br i1 %99, label %100, label %101
100: ; preds = %92
br label %224
101: ; preds = %92, %84
%102 = getelementptr inbounds [9 x i8], [9 x i8]* %10, i64 0, i64 0
%103 = load i8, i8* %102
%104 = sext i8 %103 to i32
%105 = getelementptr inbounds [3 x i8], [3 x i8]* %12, i64 0, i64 0
%106 = load i8, i8* %105
%107 = sext i8 %106 to i32
%108 = icmp eq i32 %104, %107
br i1 %108, label %109, label %144
109: ; preds = %101
%110 = getelementptr inbounds [9 x i8], [9 x i8]* %11, i64 0, i64 0
%111 = load i8, i8* %110
%112 = sext i8 %111 to i32
%113 = getelementptr inbounds [3 x i8], [3 x i8]* %12, i64 0, i64 1
%114 = load i8, i8* %113
%115 = sext i8 %114 to i32
%116 = icmp eq i32 %112, %115
br i1 %116, label %117, label %130
117: ; preds = %109
%118 = load i32, i32* %4
%119 = sub nsw i32 %118, 1
%120 = sext i32 %119 to i64
%121 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 %120
%122 = load i32, i32* %121
%123 = add nsw i32 %122, 1
store i32 %123, i32* %121
%124 = load i32, i32* %5
%125 = sub nsw i32 %124, 1
%126 = sext i32 %125 to i64
%127 = getelementptr inbounds [100 x i32], [100 x i32]* %8, i64 0, i64 %126
%128 = load i32, i32* %127
%129 = add nsw i32 %128, 1
store i32 %129, i32* %127
br label %143
130: ; preds = %109
%131 = load i32, i32* %5
%132 = sub nsw i32 %131, 1
%133 = sext i32 %132 to i64
%134 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 %133
%135 = load i32, i32* %134
%136 = add nsw i32 %135, 1
store i32 %136, i32* %134
%137 = load i32, i32* %4
%138 = sub nsw i32 %137, 1
%139 = sext i32 %138 to i64
%140 = getelementptr inbounds [100 x i32], [100 x i32]* %8, i64 0, i64 %139
%141 = load i32, i32* %140
%142 = add nsw i32 %141, 1
store i32 %142, i32* %140
br label %143
143: ; preds = %130, %117
br label %223
144: ; preds = %101
%145 = getelementptr inbounds [9 x i8], [9 x i8]* %10, i64 0, i64 0
%146 = load i8, i8* %145
%147 = sext i8 %146 to i32
%148 = getelementptr inbounds [3 x i8], [3 x i8]* %12, i64 0, i64 1
%149 = load i8, i8* %148
%150 = sext i8 %149 to i32
%151 = icmp eq i32 %147, %150
br i1 %151, label %152, label %187
152: ; preds = %144
%153 = getelementptr inbounds [9 x i8], [9 x i8]* %11, i64 0, i64 0
%154 = load i8, i8* %153
%155 = sext i8 %154 to i32
%156 = getelementptr inbounds [3 x i8], [3 x i8]* %12, i64 0, i64 0
%157 = load i8, i8* %156
%158 = sext i8 %157 to i32
%159 = icmp eq i32 %155, %158
br i1 %159, label %160, label %173
160: ; preds = %152
%161 = load i32, i32* %5
%162 = sub nsw i32 %161, 1
%163 = sext i32 %162 to i64
%164 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 %163
%165 = load i32, i32* %164
%166 = add nsw i32 %165, 1
store i32 %166, i32* %164
%167 = load i32, i32* %4
%168 = sub nsw i32 %167, 1
%169 = sext i32 %168 to i64
%170 = getelementptr inbounds [100 x i32], [100 x i32]* %8, i64 0, i64 %169
%171 = load i32, i32* %170
%172 = add nsw i32 %171, 1
store i32 %172, i32* %170
br label %186
173: ; preds = %152
%174 = load i32, i32* %4
%175 = sub nsw i32 %174, 1
%176 = sext i32 %175 to i64
%177 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 %176
%178 = load i32, i32* %177
%179 = add nsw i32 %178, 1
store i32 %179, i32* %177
%180 = load i32, i32* %5
%181 = sub nsw i32 %180, 1
%182 = sext i32 %181 to i64
%183 = getelementptr inbounds [100 x i32], [100 x i32]* %8, i64 0, i64 %182
%184 = load i32, i32* %183
%185 = add nsw i32 %184, 1
store i32 %185, i32* %183
br label %186
186: ; preds = %173, %160
br label %222
187: ; preds = %144
%188 = getelementptr inbounds [9 x i8], [9 x i8]* %11, i64 0, i64 0
%189 = load i8, i8* %188
%190 = sext i8 %189 to i32
%191 = getelementptr inbounds [3 x i8], [3 x i8]* %12, i64 0, i64 0
%192 = load i8, i8* %191
%193 = sext i8 %192 to i32
%194 = icmp eq i32 %190, %193
br i1 %194, label %195, label %208
195: ; preds = %187
%196 = load i32, i32* %4
%197 = sub nsw i32 %196, 1
%198 = sext i32 %197 to i64
%199 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 %198
%200 = load i32, i32* %199
%201 = add nsw i32 %200, 1
store i32 %201, i32* %199
%202 = load i32, i32* %5
%203 = sub nsw i32 %202, 1
%204 = sext i32 %203 to i64
%205 = getelementptr inbounds [100 x i32], [100 x i32]* %8, i64 0, i64 %204
%206 = load i32, i32* %205
%207 = add nsw i32 %206, 1
store i32 %207, i32* %205
br label %221
208: ; preds = %187
%209 = load i32, i32* %5
%210 = sub nsw i32 %209, 1
%211 = sext i32 %210 to i64
%212 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 %211
%213 = load i32, i32* %212
%214 = add nsw i32 %213, 1
store i32 %214, i32* %212
%215 = load i32, i32* %4
%216 = sub nsw i32 %215, 1
%217 = sext i32 %216 to i64
%218 = getelementptr inbounds [100 x i32], [100 x i32]* %8, i64 0, i64 %217
%219 = load i32, i32* %218
%220 = add nsw i32 %219, 1
store i32 %220, i32* %218
br label %221
221: ; preds = %208, %195
br label %222
222: ; preds = %221, %186
br label %223
223: ; preds = %222, %143
br label %224
224: ; preds = %223, %100
br label %225
225: ; preds = %224, %83
br label %226
226: ; preds = %225, %66
br label %227
227: ; preds = %226
%228 = load i32, i32* %6
%229 = add nsw i32 %228, 1
store i32 %229, i32* %6
br label %37
230: ; preds = %37
store i32 0, i32* %6
br label %231
231: ; preds = %262, %230
%232 = load i32, i32* %6
%233 = load i32, i32* %2
%234 = icmp slt i32 %232, %233
br i1 %234, label %235, label %265
235: ; preds = %231
%236 = load i32, i32* %6
%237 = sext i32 %236 to i64
%238 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 %237
%239 = load i32, i32* %238
%240 = load i32, i32* %6
%241 = sext i32 %240 to i64
%242 = getelementptr inbounds [100 x i32], [100 x i32]* %8, i64 0, i64 %241
%243 = load i32, i32* %242
%244 = add nsw i32 %239, %243
%245 = sitofp i32 %244 to float
store float %245, float* %9
%246 = load float, float* %9
%247 = fcmp oeq float %246, 0.000000e+00
br i1 %247, label %248, label %250
248: ; preds = %235
%249 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0))
br label %261
250: ; preds = %235
%251 = load i32, i32* %6
%252 = sext i32 %251 to i64
%253 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 %252
%254 = load i32, i32* %253
%255 = sitofp i32 %254 to float
%256 = load float, float* %9
%257 = fdiv float %255, %256
store float %257, float* %9
%258 = load float, float* %9
%259 = fpext float %258 to double
%260 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.4, i64 0, i64 0), double %259)
br label %261
261: ; preds = %250, %248
br label %262
262: ; preds = %261
%263 = load i32, i32* %6
%264 = add nsw i32 %263, 1
store i32 %264, i32* %6
br label %231
265: ; preds = %231
br label %14
266: ; preds = %14
ret i32 0
}

LLVM IR (-O2):
@.str = [6 x i8] c"%d %d\00"
@.str.2 = [12 x i8] c"%d %s %d %s\00"
@.str.4 = [6 x i8] c"%.3f\0A\00"
@str = [2 x i8] c"-\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca [100 x i32]
%6 = bitcast [100 x i32]* %5 to i8*
%7 = alloca [100 x i32]
%8 = bitcast [100 x i32]* %7 to i8*
%9 = alloca [9 x i8]
%10 = alloca [9 x i8]
%11 = bitcast i32* %1 to i8*
%12 = bitcast i32* %2 to i8*
%13 = bitcast i32* %3 to i8*
%14 = bitcast i32* %4 to i8*
%15 = getelementptr inbounds [9 x i8], [9 x i8]* %9, i64 0, i64 0
%16 = getelementptr inbounds [9 x i8], [9 x i8]* %10, i64 0, i64 0
%17 = call i32 (i8*, i32*, ...) @scanf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0), i32* %1, i32* %2)
%18 = icmp eq i32 %17, 2
br i1 %18, label %25, label %111
19: ; preds = %106
%20 = trunc i64 %107 to i32
br label %21
21: ; preds = %19, %37
%22 = phi i32 [ 0, %37 ], [ %20, %19 ]
%23 = call i32 (i8*, i32*, ...) @scanf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0), i32* %1, i32* %2)
%24 = icmp eq i32 %23, 2
br i1 %24, label %25, label %111
25: ; preds = %0, %21
%26 = phi i32 [ %22, %21 ], [ 0, %0 ]
%27 = icmp eq i32 %26, 0
br i1 %27, label %30, label %28
28: ; preds = %25
%29 = call i32 @putchar(i32 10)
br label %30
30: ; preds = %28, %25
%31 = load i32, i32* %2
%32 = load i32, i32* %1
%33 = mul nsw i32 %32, %31
%34 = add nsw i32 %32, -1
%35 = mul nsw i32 %33, %34
%36 = icmp sgt i32 %35, 1
br i1 %36, label %40, label %37
37: ; preds = %81, %30
%38 = phi i32 [ %32, %30 ], [ %84, %81 ]
%39 = icmp sgt i32 %38, 0
br i1 %39, label %90, label %21
40: ; preds = %30, %81
%41 = phi i32 [ %82, %81 ], [ 0, %30 ]
%42 = call i32 (i8*, i32*, ...) @scanf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.2, i64 0, i64 0), i32* %3, i8* %15, i32* %4, i8* %16)
%43 = load i8, i8* %15
%44 = icmp eq i8 %43, 115
%45 = load i8, i8* %16
%46 = icmp eq i8 %45, 115
%47 = select i1 %44, i1 %46, i1 false
br i1 %47, label %81, label %48
48: ; preds = %40
%49 = icmp eq i8 %43, 112
%50 = icmp eq i8 %45, 112
%51 = select i1 %49, i1 %50, i1 false
br i1 %51, label %81, label %52
52: ; preds = %48
%53 = icmp eq i8 %43, 114
%54 = icmp eq i8 %45, 114
%55 = select i1 %53, i1 %54, i1 false
br i1 %55, label %81, label %56
56: ; preds = %52
switch i8 %43, label %63 [
i8 115, label %57
i8 112, label %60
]
57: ; preds = %56
%58 = select i1 %50, i32* %3, i32* %4
%59 = select i1 %50, i32* %4, i32* %3
br label %66
60: ; preds = %56
%61 = select i1 %46, i32* %4, i32* %3
%62 = select i1 %46, i32* %3, i32* %4
br label %66
63: ; preds = %56
%64 = select i1 %46, i32* %3, i32* %4
%65 = select i1 %46, i32* %4, i32* %3
br label %66
66: ; preds = %63, %60, %57
%67 = phi i32* [ %58, %57 ], [ %61, %60 ], [ %64, %63 ]
%68 = phi i32* [ %59, %57 ], [ %62, %60 ], [ %65, %63 ]
%69 = load i32, i32* %67
%70 = add nsw i32 %69, -1
%71 = sext i32 %70 to i64
%72 = getelementptr inbounds [100 x i32], [100 x i32]* %5, i64 0, i64 %71
%73 = load i32, i32* %72
%74 = add nsw i32 %73, 1
store i32 %74, i32* %72
%75 = load i32, i32* %68
%76 = add nsw i32 %75, -1
%77 = sext i32 %76 to i64
%78 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 %77
%79 = load i32, i32* %78
%80 = add nsw i32 %79, 1
store i32 %80, i32* %78
br label %81
81: ; preds = %66, %52, %48, %40
%82 = add nuw nsw i32 %41, 1
%83 = load i32, i32* %2
%84 = load i32, i32* %1
%85 = mul nsw i32 %84, %83
%86 = add nsw i32 %84, -1
%87 = mul nsw i32 %85, %86
%88 = sdiv i32 %87, 2
%89 = icmp slt i32 %82, %88
br i1 %89, label %40, label %37
90: ; preds = %37, %106
%91 = phi i64 [ %107, %106 ], [ 0, %37 ]
%92 = getelementptr inbounds [100 x i32], [100 x i32]* %5, i64 0, i64 %91
%93 = load i32, i32* %92
%94 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 %91
%95 = load i32, i32* %94
%96 = add nsw i32 %95, %93
%97 = icmp eq i32 %96, 0
br i1 %97, label %98, label %100
98: ; preds = %90
%99 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([2 x i8], [2 x i8]* @str, i64 0, i64 0))
br label %106
100: ; preds = %90
%101 = sitofp i32 %96 to float
%102 = sitofp i32 %93 to float
%103 = fdiv float %102, %101
%104 = fpext float %103 to double
%105 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.4, i64 0, i64 0), double %104)
br label %106
106: ; preds = %98, %100
%107 = add nuw nsw i64 %91, 1
%108 = load i32, i32* %1
%109 = sext i32 %108 to i64
%110 = icmp slt i64 %107, %109
br i1 %110, label %90, label %19
111: ; preds = %21, %0
ret i32 0
}