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: theem1502

Problemset: รถไฟตู้เสบียง (Dining Car)

Language: cpp

Time: 0.002 second

Submitted On: 2026-02-15 15:46:46

#include <bits/stdc++.h>
#include "dining_car.h"

using namespace std;

// you can also write additional functions here


int findinside(int l, int r) {

    while(l < r) {
        int mid = (l + r) / 2;
        int val = compare_cars(mid, mid+1);
        if (val <= 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) / 2;
        int val = compare_cars(l, r);
        if (val == 0) {
            int x = findinside(l, mid);
            int y = r - (x - l);
            return make_pair(x, y);

        }

        else {
            int anotherq = compare_cars(mid,mid+1);
            if (val == -1 && anotherq == -1) {
                r = mid;
            }
            else if (val == 1 && anotherq == 1) {
                l = mid + 1;
            }
            else {
                return {findinside(l, mid), findinside(mid+1, r)};
            }




        }




    }
    return {l,l};

}