Magic Ship(CF 1117C)

Hey, I am having an issue with this problem: .
I am getting testcase number 7 wrong for this problem in this submission:

My idea for this problem is to basically calculate the prefix sums for the x and y directions(where U and R are positive and L and D are negative). I also calculate the distance between the final and starting Xs and Ys. Then I binary search through the answer and check whether the specific day works. I think my issue has to do with the check function since the binary search function is copied from USACO Guide. Here is my code for this problem:

Edit: I checked the official CF solution, and I am pretty sure that my check function actually has the same logic as the solution. However, I could be wrong :man_shrugging:

#include <bits/stdc++.h>
using namespace std;

using ll = long long;

const ll MXN = 1e5+2;
ll totx, toty, n;
string s;
//Prefix sums
ll px[MXN], py[MXN];

bool check(ll days){
  ll x = totx;
  ll y = toty;
  //Compute how much the wind is going to shave off from the distance we need to travel
  x-= (days/n) * px[n] + px[days%n];
  y-= (days/n) * py[n] + py[days%n];
  //return false if the distance left to travel after the computation of the wind
  // is more than the number of days we allotted
  return abs(x+y) <=days;

//Binary search
ll fstTrue(ll lo, ll hi) {
    // returns hi+1 if no x satisfies f
    for (hi ++; lo < hi; ) {
        ll mid = (lo+hi)/2;
        check(mid) ? hi = mid : lo = mid+1;
    return lo;

int main() {
  ll x1, y1, x2, y2;
  totx = x2 - x1, toty = y2 - y1;
  // Calculate prefix sums
  px[0] = 0, py[0] = 0;
  for(ll i=1; i<=n; i++){
    px[i] = px[i-1], py[i] = py[i-1];
    if(s[i-1]=='U') py[i]++;
    else if(s[i-1]=='D') py[i]--;
    else if(s[i-1]=='R') px[i]++;
    else if(s[i-1]=='L') px[i]--;
  ll ans = fstTrue(1, 1e18);
  if(ans==1000000000000000001) cout<<-1;
  else cout<<ans;

Thank you

you can see the test data …

I can’t exactly see it since the string goes off the screen

So it turns out that abs(x+y) \neq abs(x) + abs(y) meaning that the return statement for the check function should be abs(x) + abs(y). I would like to thank Codicon on the discord for helping me and being orz