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};
}