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: Zenzaza
Problemset: รถไฟตู้เสบียง (Dining Car)
Language: cpp
Time: 0.002 second
Submitted On: 2026-02-15 15:47:51
#include <bits/stdc++.h>
#include "dining_car.h"
using namespace std;
int findinside(int l, int r)
{
while (l<r)
{
int mid = (l+r)/2;
if (compare_cars(mid, mid+1)<=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)
{
//cout<<"debug "<<l<<' '<<r<<'\n';
int mid = (l+r)/2;
int sideq = compare_cars(l, r);
if (sideq == 0)
{
int x = findinside(l, mid);
int y = r-(x-l);
return {x, y};
}
int midq = compare_cars(mid, mid+1);
if (sideq==-1 && midq==-1) r = mid;
else if (sideq==1 && midq==1) l = mid+1;
else return {findinside(l, mid), findinside(mid+1, r)};
}
}