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: Zenzaza

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

Language: cpp

Time: 0.002 second

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

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

using namespace std;

int findinside(int l, int r)
{
  while (l<r)
  {
    int mid = (l+r)/2;
    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)
  {
    //cout<<"debug "<<l<<' '<<r<<'\n';
    int mid = (l+r)/2;
    int sideq = compare_cars(l, r);
    if (sideq == 0)
    {
      int x = findinside(l, mid);
      int y = r-(x-l);
      return {x, y};
    }
    int midq = compare_cars(mid, mid+1);
    if (sideq==-1 && midq==-1) r = mid;
    else if (sideq==1 && midq==1) l = mid+1;
    else return {findinside(l, mid), findinside(mid+1, r)};
  }
}