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