Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Challenge

Name: Anonymous 2013-10-01 2:22

Given 10000000 random 8bit signed integers, create the fastest program to sum them.
Assembly not allowed. Time is counted only at the process of summation.

Name: Anonymous 2013-10-01 16:18

enterprise-level C, this should run in O(log(n))


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define LENGTH 10000000
#define MAX 128

int sum(int* arr, int len)
{
    if(len == 2)
        return (arr[0] + arr[1]);
    else if(len == 1)
        return arr[0];
    else
    {
        int len1 = (len / 2), len2 = (len / 2) + (len % 2);
        int* arr1 = (int*) malloc(sizeof(int) * len1);
        int* arr2 = (int*) malloc(sizeof(int) * len2);
        memcpy(arr1, arr, sizeof(int) * len1);
        memcpy(arr2, (arr + len1), sizeof(int) * len2);
        int toReturn = sum(arr1, len1) + sum(arr2, len2);
        free(arr1);
        free(arr2);
        return toReturn;
    }
}

int main()
{
    int* arr = (int*) malloc(sizeof(int) * LENGTH);

    for(int i = 0; i < LENGTH; i++)
        arr[i] = rand() % MAX;

    printf("Sum is: %d", sum(arr, LENGTH));
    free(arr);
    return 0;
}

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List