Submission

Status:
Compilation Error

Score: 0

User: jxkrpn

Problemset: ขนมของเซ้น143 (v.ยาก)

Language: c

Time: 0.000 second

Submitted On: 2024-10-02 12:55:20

#include <stdio.h>
#include <math.h>

// Custom absolute value function
long long int my_abs(long long int x) {
    return x < 0 ? -x : x;
}

int main() {
    long long int n, total_sum, half_sum, group_a_sum, min_diff;

    // Input the number of snack bags
    scanf("%lld", &n);

    // Calculate the total sum of all numbers from 1 to n
    total_sum = (n * (n + 1)) / 2;

    // Find the sum closest to half the total sum
    half_sum = total_sum / 2;

    // Calculate an estimate for x (using the quadratic formula)
    long long int x = (long long int)((-1 + sqrt(1 + 8 * half_sum)) / 2);

    // Calculate the sum for group A using x
    group_a_sum = (x * (x + 1)) / 2;

    // Calculate the difference for group A
    long long int group_b_sum = total_sum - group_a_sum;
    min_diff = my_abs(group_a_sum - group_b_sum);

    // Check the previous number (x - 1) for a potentially better result
    if (x > 1) {
        long long int group_a_sum_prev = ((x - 1) * x) / 2;
        long long int group_b_sum_prev = total_sum - group_a_sum_prev;
        long long int diff_prev = my_abs(group_a_sum_prev - group_b_sum_prev);

        // Output the smallest difference
        if (diff_prev < min_diff) {
            min_diff = diff_prev;
        }
    }

    // Output the final result
    printf("%lld\n", min_diff);

    return 0;
}