/*
 * YOUR INFO HERE!
 */

// FINAL VERSION:
int sum_even_fibonacci(int top){
    int counter = 0;
    
    int a, b, c;
    a = 1;
    b = 1;
    c = 2;
    
    for (;c < top;){
        counter += c;
        
        a = b + c;
        b = c + a;
        c = a + b;
    }
}

#ifdef EULER_PROBLEM
// BUILDING AREA:
struct Euler_In{};

struct Euler_Result{
    int counter;
};

static const int TOP = 4000000;

inline Euler_Result euler_main(Euler_In in){
    Euler_Result result;
    result.counter = sum_even_fibonacci(TOP);
    return result;
}

void euler_print(Euler_Result answer, Euler_In in){
    printf("%d\n", answer.counter);
}

#define EULER_CHECK

bool euler_check(Euler_Result answer, Euler_In in){
    bool result;
    
    int counter = 0;
    
    int a, b, c;
    a = 0;
    b = 1;
    c = 0;
    
    for (;c < TOP;){
        if (c % 2 == 0){
            counter += c;
        }
        c = a + b;
        a = b;
        b = c;
    }
    
    printf("answer = %d\n", counter);
    result = (counter == answer.counter);
    
    return result;
}
#endif

