Submission

Status:

(PPPPPPPPPPPPPPP)(PPPPPPPP)(PPPPPPPPPP)(PPPPPPPPPP)(PPPPPPPPPP)(PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP)

Subtask/Task Score:

{3/3}{7/7}{12/12}{17/17}{21/21}{40/40}

Score: 100

User: Zonezonee

Problemset: รถไฟตู้เสบียง (Dining Car)

Language: cpp

Time: 0.002 second

Submitted On: 2026-02-15 15:28:51

#include <bits/stdc++.h>
#include "dining_car.h"

using namespace std;

int f(int l, int r){
  while(l < r){
    int mid = (l+r)>>1;
    if(compare_cars(mid, mid+1) <= 0) r = mid;
    else l = mid+1; 
  }
  return l;
}
pair < int, int > locate_dining_cars(int N) 
{
  int l = 1, r = N;
  while(l < r){
    int mid = (l+r)>>1;
    int left_right = compare_cars(l, r);
    if(left_right == 0){
      int a = f(l, mid);
      return {a, r - (a-l)};
    }

    int mid_query = compare_cars(mid, mid+1);
    if(left_right == -1 && mid_query == -1) r = mid;
    else if(left_right == 1 && mid_query == 1) l = mid+1;
    else return {f(l, mid), f(mid+1, r)};
  }
  return {-1, -1};
}