Submission
Status:
(-SSSSSSSSSSSSSS)(PPPPPPPP)(PPPPPPPP-S)(PPPPPPP-SS)(PPPPPPPPPP)(PPPPPPPPPPPPPPPPPPPPP%PPPPPPPPPPPPPP%PP-)
Subtask/Task Score:
{0/3}{7/7}{0/12}{0/17}{21/21}{0/40}
Score: 28
User: nozmid
Problemset: รถไฟตู้เสบียง (Dining Car)
Language: cpp
Time: 0.002 second
Submitted On: 2026-04-24 20:49:09
#include <bits/stdc++.h>
#include "dining_car.h"
using namespace std;
#define pii pair<int, int>
#define F first
#define S second
int bs(int l, int r){
int res = -1;
while(l <= r){
int m = l + (r - l) / 2;
int q = compare_cars(m, m+1);
if(q <= 0){
res = m;
r = m - 1;
}
else l = m + 1;
}
return res;
}
pii locate_dining_cars(int n){
int a = bs(1, n);
int l, r;
if(a - 1 < n - a){
if(compare_cars(1, a + (a - 1)) >= 0){
l = a + 1, r = n;
}
else{
l = 1, r = a - 1;
}
}
else{
if(compare_cars(a - (n - a), n) <= 0){
l = 1, r = a - 1;
}
else{
l = a + 1, r = n;
}
}
int b = bs(l, r);
if(a > b) swap(a, b);
return {a, b};
}