In this 109101215, I got WrongAnswer because of an overflow. The overflow comes from
long long a[N], ans;
int n;
vector<long long> sum;
...
ans = spin*n + lower_bound(sum.begin(),sum.end(),x[i] - spin*a[n-1]) - sum.begin();
I manage to fix it by adding parenthesis to lower_bound(..)-sum.begin()
.
This is learned from other guys' code. But I have no idea what I am doing and what has been corrected. Can someone explain what happens?