Submission
Status:
(PPP-SSSSSSSSSSS)(-SSSSSSS)(-SSSSSSSSS)(-SSSSSSSSS)(-SSSSSSSSS)(-SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS)
Subtask/Task Score:
{0/3}{0/7}{0/12}{0/17}{0/21}{0/40}
Score: 0
User: saganegadih
Problemset: รถไฟตู้เสบียง (Dining Car)
Language: cpp
Time: 0.002 second
Submitted On: 2026-06-01 11:31:30
#include <bits/stdc++.h>
#include "dining_car.h"
using namespace std;
// you can also write additional functions here
pair < int, int > locate_dining_cars(int N)
{
//write your code here
//you can call "compare_cars(i,j)"
int k;
int init = compare_cars(1,N);
int eq[2] = {1,N};
int num = 0;
int ori = N-2;
while(ori!=0) {
ori = (int)floor(ori/2);
num++;
}
num = (int)pow(2,num-1);
if(init == -1) {
k = N;
while(num!=0) {
k = k + compare_cars(1,k)*num;
num = (int)floor(num/2);
}
eq[0] = 1;
eq[1] = k;
int tungsahur = compare_cars(eq[0]+1,eq[1]);
if(tungsahur==1) {
while(compare_cars(eq[0]+1,eq[1])==-1) {
eq[0]++;
eq[1]--;
}
}else if(tungsahur==-1){
while(compare_cars(eq[0]+1,eq[1])==-1) {
eq[0]++;
eq[1]++;
}
}
}
if(init == 1) {
k = 1;
while(num!=0) {
k = k + compare_cars(1,k)*num;
num = (int)floor(num/2);
}
eq[0] = k;
eq[1] = N;
int tungsahur = compare_cars(eq[0]+1,eq[1]);
if(tungsahur==-1) {
while(compare_cars(eq[0]+1,eq[1])==-1) {
eq[0]++;
eq[1]--;
}
}else if(tungsahur==1){
while(compare_cars(eq[0]-1,eq[1])==-1) {
eq[0]--;
eq[1]--;
}
}
}
if(init == 0){
while(compare_cars(eq[0]+1,eq[1])==-1) {
eq[0]++;
eq[1]--;
}
}
int max,min;
if(eq[0]>eq[1]) {
max = eq[0];
min = eq[1];
} else {
max = eq[1];
min = eq[0];
}
return make_pair(min, max);
}