#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <time.h>

double sec(){
    struct timespec t;
    clock_gettime(CLOCK_MONOTONIC, &t);
    return t.tv_sec + 1e-9 * t.tv_nsec;
}

int find_maximum(int *values, size_t n){
    int maximum = INT_MIN;
    for (size_t i = 0; i < n; i++){
        maximum = values[i] > maximum ? values[i] : maximum;
    }
    return maximum;
}

int main(){
    for (int k = 0; k < 10; k++){
        size_t n = 13 * 1000 * 1000;

        size_t n_bytes = n * sizeof(int);
        int *values = malloc(n_bytes);

        for (size_t i = 0; i < n; i++){
            values[i] = rand();
        }

        double t = sec();

        int maximum = find_maximum(values, n);

        double dt = sec() - t;

        printf("%f GB/s, maximum value: %i\n", n_bytes * 1e-9 / dt, maximum);

        free(values);
    }

    return 0;
}
