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