Решаю задачу Сумма квадратов с e-olimp. Что не так в этом куске кода? Подозреваю что ошибка во взятии по модулю.
cin >> n >> m;
if (n < 0 && m < 0) {
n = abs(n); m = abs(m);
}
if (n > m) swap(n, m);
long long sum1 = 0, sum2 = 0, gr, GR;
gr = abs(n);
if (n > 0)
--gr;
sum1 = ((MOD + (gr * (gr + 1) * (2 * gr + 1) / 6) % MOD) % MOD);
GR = abs(m);
sum2 = ((MOD + (GR * (GR + 1) * (2 * GR + 1) / 6) % MOD) % MOD);
ll ans;
if (n > 0)
ans = (MOD + (sum2 - sum1) % MOD) % MOD;
else
ans = (MOD + (sum2 + sum1) % MOD) % MOD;
assert(ans >= 0);
cout << ans;
cout << '\n';
UPD: Прошу прощения за кривую разметку