线段树维护
cout << __gcd(query_gcd(x + 1, y, 1, 1, n), query_sum(1, x, 1, 1, n)) << '\n';
改成
cout << abs(__gcd(query_gcd(x + 1, y, 1, 1, n), query_sum(1, x, 1, 1, n))) << '\n';
加上绝对值即可通过此题
这引申出一个问题
两个负数的最大公约数应按照正数还是负数算?
网上查找的资料说法各不相同
还是我对这里取绝对值的理解有误?