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;
}