Submission

Status:

(PPPPPPPPPPPPPPP)(P-SSSSSS)(PPPPPPPPPP)(-SSSSSSSSS)(-SSSSSSSSS)(PP-SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS)

Subtask/Task Score:

{3/3}{0/7}{12/12}{0/17}{0/21}{0/40}

Score: 15

User: pxsit

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

Language: cpp

Time: 0.001 second

Submitted On: 2025-05-24 18:30:16

#include "dining_car.h"
#include <bits/stdc++.h>
using namespace std;
int find(int l, int r) {
    while (l < r) {
        int mid = l + (r - l) / 2; 
        if (compare_cars(mid, mid + 1) <= 0) { 
            r = mid;
        } else { 
            l = mid + 1;
        }
    }
    return l;
}
pair<int, int> locate_dining_cars(int n) {
    if(n <= 10){
        int fs = find(1, n), nd = -1;
        if (fs > 1) {
            int cand = find(1, fs - 1);
            if (compare_cars(cand, fs) == 0) {
                nd = cand;
            }
        }
        if (nd == -1 && fs < n)
            nd = find(fs + 1, n);
        return {min(fs, nd), max(fs, nd)};
    }
    int a = find(1, n),b = find(a + 1, n);
    return {a, b};
}