#!/usr/bin/env bash

set -e

declare -A input

input[bellman_ford]=bfsBellman
input[bfs_dijkstra]=bfsDijkstra
input[byzantine]=byzantine
input[leader_elect_dp]=leader_elect_dp
input[leader_elect_hs]=leader_elect_hs
input[leader_elect_lcr]=leader_elect_lcr
input[kcommittee]=kcommitte
input[dominating_set]=dominatingSet
input[mis]=mis
input[mst]=mst
input[vertex_coloring]=vertexColoring

cmake .
make

mkdir -p ../output

for problem in "${!input[@]}"; do
    input_name="${input[$problem]}"
    for input_filename in ../input/input${input_name}*; do
        output_filename=$(printf "${input_filename}" | sed 's/input/output/g')
        /usr/bin/time -f '%e %x' ./${problem} - ${input_filename} 2>/tmp/time_output | tee ${output_filename} >/dev/null

        retcode=$(cut -d ' ' -f 2 /tmp/time_output)
        runtime=$(cut -d ' ' -f 1 /tmp/time_output)

        printf "%s - %s\n" "${input_filename}" "${runtime}"

        if [ $retcode -ne 0 ]; then
            printf "${problem}: ${input_filename}"
        fi
    done
done | tee ../output_times
