結果
| 問題 |
No.3074 Divide Points Fairly
|
| コンテスト | |
| ユーザー |
Today03
|
| 提出日時 | 2025-04-01 13:10:15 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 14,113 bytes |
| コンパイル時間 | 3,843 ms |
| コンパイル使用メモリ | 278,516 KB |
| 実行使用メモリ | 15,940 KB |
| 最終ジャッジ日時 | 2025-04-01 13:10:29 |
| 合計ジャッジ時間 | 13,085 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 14 TLE * 1 -- * 27 |
ソースコード
#include <bits/stdc++.h>
#define ALL(x) (x).begin(), (x).end()
#define LB(v, x) (int)(lower_bound(ALL(v), x) - (v).begin())
#define UQ(v) sort(ALL(v)), (v).erase(unique(ALL(v)), (v).end())
#define IO ios::sync_with_stdio(false), cin.tie(nullptr);
#define chmax(a, b) (a) = (a) < (b) ? (b) : (a)
#define chmin(a, b) (a) = (a) < (b) ? (a) : (b)
using namespace std;
using ll = long long;
const int INF = 1e9 + 10;
const ll INFL = 4e18;
/*
.-WVyyyVyVyWkfWHWHVyVyyyyyyyVyyyVyyyyVWMmkyyyyyyyyyVH&.
..WVyVyyVyyWWHHVyyyVyVHHkyVyyyyyyyyyyyyyyyyyWMkVyyyyyyyyVVn,
.XVVVyyyyVyVKWyyyyyyyyyyyyWMkyVyVyyyyyyyyyyyyyyVyWHWVyVyyyyyVVS,
.HyyyyyyyyyVWHyyVyVyVyVyyyVyyVWNkyyVyVyyyyyyyyyyyyyyyWNkyyyyyyyyyVh,
:_. `.HyyyyVVyyVyVWWyVyyyyyyyyyyyyyyyyyWHWyyyyyyyyyyyyyyyyyyVyWHWyyyyyyyyyVn.
:::_. ` JWyyyVWyyyyyVWyyWyyyyyyyyyyyyyyyyyyyyWWyyyyyyyyyyyyyyyyyyyyyWkyyyyyyyyyyW,`
~::::- .WyyyyyWWyyyyyWyyWyyyyyyyyyyyyyyyyyyyyyyWWyyyyyyyyyyyyyyyyyyyyyyWyyyyyyyyyyVn
:~~:~:~. ` ` `.HyyyyyWWyyyyyWyyWWyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyVWyyyyyyyyyyyyyyyyyyyyyyyyyyk.
:~:~::::_ .WyyyyyWWyyyyyyWyyWyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyWkyyyyyyyyyyyyZyWyyyyyyyyyyyW,
~::~:~~::~ ,WyyyyyWHyyyyyyyyyWyyyyyyyyyyyyyyyyyyyyyyWkyyyyyyyyyZyWkyyyZyZyyyyyyyyHyyyyyyyyyyyW,`
::~:::~:~` ,yyyyyyWHyyyyZyyyyWkyyyyyyyZyyZyyZyyZyyZyyyWkyyyZyyyyyyyWkyyyyyZyyyyyyyWHyyyyZyyyyyyW; ` ` ` ` `
~:~~:::~ ` .WyyyyyWHyyyZyyZyyyWyyyyyyyyyyyyyyyyyyyyyyyyyWWyyyyyyyyyyyHWyyyyyWyZyyyyyWkyyyyZyZyyyyy; `
:~::~~` .HyWHyyyWyyyyyyyyyyyWyyyyZyyZyyZyyZyyZyyZyyyyyyVyyyyyWWyyyyyHyZyyyyHyyyyyyyWkyZyyZyZyy=?W, ` ``` ............
:~::~` ` .kyyWyyyWHyyyyyyyyyyyWyyyyyyyyyyyyyyyyyyyyZyZyyyyyZyZyyyyyZyyyWyZyZyWyyZZyyyyHyyZyyyyy%..(X-::::~::~::::::::::~:~::
::~~ ` (yyWyyyyWyyyyyyyyWyyWyyyZZyZyZyZyZyZyZyZyyyZyZyZyyyyyyyyWyyZyyWkyyyyWkyyyZyZyWHyyyk..(W-..Oh::~~:~::~:~~~~~:~::~:~:
~:~ ` .WyWyyZyWHyyZZyZyWyyyWyyyyyyyZyyyZyyyZyyZyZyyyyZyyZyyZyyyyHyyyZyWyZyyWNyyZyyyY7Wkyyyk-(yyyyyW2:~::~~:~::~::~~:~:~:~~
~``_:::::::~::dyyWyyyyWyyyyyyyyWyyyWyyyWyyyyyZyyyZyyyyyZyyZyyyyZyyWyZyZyWHyyyyyHyyyyNZyyyyyl.(NyyyyyyyyyyyyW_~:~::~:~::~:::~:~::::
`~:~:~:~~:(HyyyyZyWHyZyyZyyWHyZyWyZyVZyZyyyZyyyZyZyyyyZyZyZyyyyWkyyyZyWyZyyyWkyZyWyyZyZyyyyWkyyyyyZyZyZyWr:~:~::~:~:~:~::~:~~:~
` ` :~::~::~JWyWyyyyWyyyZyyZyWWyyyWyyyyyZyZyyyZyyyZyZyZyyyyZyyyZyyHyyyyyyZyZyyyWyyZWkyyZyyZyyyNyZyyZyyyZyyWk:::~:~::~::~:~::~::~:
` ` ~::~::(WyW$-?4yHZyyyyyyyWyyZyWyyyyZyyyZyyZyZyyyWyyZyyZyC74yZyWkyyZyyyyyZyyykyyWHyyyyZyyZyWkyyWyyZyyyyWW2:~::~:~:~::~:~::~::~
` ` ` `~(#yW{..dW#y>.dfjyyWyyyZWWyZWyyyyZyyyZyyyyyyyyyZyyWdyyyyyHyyyZyZyyZyyyWyyyHyyZyyyZyyWNyyWyyyZyZyyWb::~::~:~:~::~:~:~:~:
` ` `` ` `.WWyn((dWHy&-yk+WyHyZyyyWyyWWyyZyyZyyyZyyyyyyZyyyyyZyyZyWyZykyyZyyZyZyHyypyyZyyZyyyyWWyWyyyyZyyyWR:~:~:~::~:~:~::~:~:~
` ` `` `dyKyyyyyWyyyyyyWWyHyyZyyWyyyHyyyyZyyZyyZyyWyyyyZyyZyyZyyWkyyWWyyyyyyyyWyyWyyyZyyyZyZWHyWkyZyyyZyyH<:~:~:~:~::~:~:~::~:
` ` ` ` ` HWWyyyyyWyyZyyyWyyHyyyZyWyyyWyyZyyyZyyZyyZWkyyZyyZyyyyyyWHyyWNyyyWyyyyyHyWyyZyyZyyyyyNyyWyyZyyyZyW>::~:~:~:~:~::~:~:~:
` ` ` ` ``.HWyZyZyyyyyZyZyXyyHyyZyyWkyyWkyyZyyyyZyyyyyHyyyyZyyZyZyyyHyyybHyyWWyZyyWyWyyyyZyyZyyyHyykyyyZyyWyW[~::~::~::~:~:~::~:~
` `` ` ` ,yHyyyyyZyyZyyyyWyyHyyyyyyHyyyHyyyZyyZyyZyyyWWyZyyyZyyyZyyHyyyWWWyykyyZyWkWyyyZyyZyZyyWyyHyyZyyyWHyD:~:~:~:~:~:~::~~::~
` ` ` ` `JWHyyykyyZyyyZyyWyyHyWyZyyWyyyWkyyyZyyyZyZyyWHyyZyyyZyyyyyHyZyWWHyyHyyyyyHWWyyyyyyyyZyWkyHyyyZyyyWWS::~:~:~:~:~:~:~:~::
` ` ` ` XWyZyykyyyZyyyZyWyyNyWyyZyWHyyyHyZyyZyyyyyZyykyyyZyyyZyZyyHyyZH<WWyWkyZyyWWWWyZyZyyZyyWHyWyyZyyZyXNW:~::~::~::~::~::~~:
` `` ` `.WHyyZyWyZyyZyyyyWyyHyWyyyyWdkyyWHyyyyZyZyyyZyWZyyZyZyyyyZyHyyyK:?HyWHkWWyWHWWyyyZyyyZyW#yWWyyyZyyyHWr:~~:~:~:~:~:~:~::~
` ` ` ``.yMyyyWHyyZyyZyZyWyyHyyHyyyW>4yyyWkyZyyyyZyyyZWkyZyyyZyyyyWHyZWD~.?WWEdkyyyNHWyyyyZyyyyyNyWHyyZyyyyHHb:::~:~:~:~:~:~:~::
`` ` ` .XWyZyWHyyyyyyZyyXWykyyWyyZWr(HyyyHkyyZyyZyZyyWHyyyyyyZyZyWHyyW:.-YHyW;?kyyWHWyZyyZyZyZyWyWNyyyyZyy$WW:~::~:~::~::~:~:~~
` `` _::dWdyyyyHyZyyZyyyyWWyWyyWKyyW].-kyyyNWyyZyyyyZyyHyZyZyyyZyyWyWWNY=..zyW<;dkyWHWyyyZyyyZyyWWyHyyZyyZybJW<:~~::~:~:~:~::~::
` ` .:~(kfJyyZyHyyyyyZyZyykyWWyyNyyyb../kyyyHWyyZyyyyyyWyyZyZyWWkkHHWW\.`.`.WW<;;dkW#WWyyyyZyyyyWWyHkyyZyyyP(W2:~:~::~:~:~:~:~:~
`` ` ~::(H$JyyyyHyyWWyyyyyWWyWkkW#HkkW-..?kyyWNWyyyZZyZyWWyyyyyyWyWNyyf. ..(?WH++++HWNHkWyyyyZyyyWWkHHyyyZyyP:Xr::~:~~::~::~:~:~:
` `.:::(WlJWyZyHyyyWZyyZyWWyWHyW6vWyyr_?7THWWMHKyyyyyyyyHyZyZyyyyWWyWI<~-(igmWqHHNMMHHWHyyZyyZyyWHHWWyZyyyyP:dR:~::~:~::~:~::~::
` ` ~:~:JW<(kyyyWyyyVyZyyyWVWyHyWv_jyyk_.../kyyb?kyyZyyZyHyyZyyZyW$wWf-+dqHNMMMMM=jN(NNHyyyyZyyZyWXNWWyyyZyyP:JW:~:~::~~:~::~:~:~
` ` ~:~JS:(HyyyWyyZWyyyyyyHWyWyW:..jyVh..--(HkWs?WyyZyyyWyyyyyyyX!Jy<WB=NMMMMNVTWY@.WMyyyyyyyyyyyKHWWHyyyyWD:(W<:~:~::~::~~:~:~:
` ` ` ~dk:(HyZyWWyyWWyZyZyWWyWWk..`.?Wk-.....WXWc<4WyyZyWkyZyWWW%.JP?H` ,MH6OH6=vz% dNyyWyZyZyyyy]WWHHyZyyWD:(W2::~:~::~:~::~::~
` ` ` X0:~HyyyHWWyyHyyZyyyHHWkkumWqqHkHHHNHHNMkH-<?WyyyyHyyyWyf..d!.D ?fz<:::j}`.HHyyyyyZyZyyW#dWNWyyZyW$~:Wr:~:~:~~:~::~:~:~
` ` `` Wt~:dyyyHWHyyWyyyyyyWHXHHHY=<?MMNMMMMM<(MNN._?4yyyHyyyWK_`.<..}. `."w++7~ -<NWyyWyyyyyZyWKXHHWHyyyyC::dP:~::~::~:~~:~:~:
` ` ` Hr JyyZWXHyyWkyZyyyyHkWWW2`` ?M#HSvW#zZH}4j. <?WyHyyZW{..`.`.`... .. ~_~..._qXyykyZyyZyyWKuHHkHyyZy>~:Jb~:~:~:~::~::~::~
` ` ` ` H)``,WyyWXHWyyHyyZyZyWNWR.?n (HvI?<<:<z~.~(_.-<?Wyyf4}.`..`..``......~~-~_(WdyyHyyZyyyyW#zHKHWyyyy>:~(H::~~:~:~::~::~::
` ` ` k\ .(HyyWXHHyZHyyyZyyyWkD...<. `?4++<jJ^ ......`-dWf`.4..`..`..`.``...~~~._(UJyyHyyyZyZyy#zWKHWHyyWI::(W:~:::~:~~:~~:~~:
` ` `` ` W[_:(HyyWXHHyyWkyyyyZyWHW.`....( ......_!.``.`.`..J^```.!`.``.`..`..........(WJyyWyZyyyyZyHzWHdyHyyW2:~(W<:~:~:::~::~::~:
` ` ` .HR:::WyyWkNWyyyHyZyyyyWWHZ+.``...........`..`.`..`. ```..`...`.`..`.`..`.`..(WJyyWyyZyyyyyHzXKXkWkyWr:~(Wr:~:~~:~:~::~:(?
` ` ` `.KR:~:dyyWSbWyHyWyyZyyyyWWRQn.....(~_<~...`...`..`...--..`.`.`..`..`..``.`.`.JW(yWWyyyZyZWWHzXKuHWHyWr::(Wr::~::~:~:~::(<`
_.. ` ((HW:~:(kyWKWWKHyUHyyZyZyWWWuzX-.....__.....``..`.`.` _^`..`..`..`.`.`..`..`..Jk(yWWZyyyZyWWHzXHzWyWyyP~::WP~::~::~::~:(=..
::~::_::(WW<:~(HyyRdfNWyyNyyyZyyyWyRzuH,.......`.`..`.`.`.`.`.`.`..`.`.`...`..`.`.`..dRJyWyyZyyyyWyHuX#uXyWkyD:~:Wb:~:~~::~:(J!..!
~:~~::~::ZW<:::dyyHXHMWWyWkyZyyZyyNWkzXX,.`.`.`..`...`...`...`..`.`..`..``..`..`..`..dMWyWyyyZyZyWy#uu#uuyyHyD::~dK::~::~::J^. __(
:~::~:~::XW2~::JWyWuHSHHyWNyyyyyyyWkHudkXo.`.`..`.``..`.`.`.`..`..`.`.`..`.`.`...`..VWWXyWyyyyZyyWy#zuHzXkyWyS:~:XS:~:::~(<.-(!.(+
:~:~:~:~:wWr:~~(HyWXWWdNyWWkyZyZyyWMWKuKzuX,..`..`..`..`.`.`.`.`.`...`.`..`..`.`.J9=dWHWyWyZyyyyyHyKuzHuuHyWkW<::WS::~:(<_.-!` (<z
~:~:::~::dyb::::qyWRdW2NyyHNyyZyyyyWNWuXuuuHU&....`..`..`...`...(<77!.`..`..` .d3===dyWWyWyyZyZyWHXRuuHzuHyyHW>::kk_:(C..-!...;+6v
:~:~:~::~dyK~:~:?Wy#XHRJWyWdWyyyZyyWHkWXuuuXuuuUnJ,.`.`..`.`..`..`.``..`..`.J9======dWdXyWyyyZyyWWWSzuHuuHyyWW$~(HW>(! -!`..(j9jC:
::~:~:~::JyW:~:~(HyHuHW(HyWXNyyyZyyyHWWXSuuXXuuuuuXWUGJ...`.`.`.`...`.`...X3========dWdHyWyyZyyyHyWkuuWuzqyZyHR:(WW^.(^`..(jZ>;Z::
~:~::~:~:(yW::::~qyWkWW2vyWKWWyyyZyyWRWWWuuuWuuuuuXpuuuuXdBk&(...`.`. .J6===========XWzNyVZyyyyW#yWkuuWuuWyyyWH_dY-/~....<JI;;jt:~
:~:~::~:~(WWr:~::JHWKXWb(Wy#uNyyyyZyWWXWWuuuXkuuuuuHkuuX@::?O==zvTUU96==========?===yyzHyfyyZyyWyyfWuuWuuWyyWyHsi/_...`.jZJ;;+P::(
:~:~::~:::Wyb~:~:~HyNXHW2WyWuXWyZyyyyHXXWKuuuWuuuuuHXT8X:::u?s============?==?=====zkRdNyWyyyyyHyyKXuuWuuXyyWkKv~..`. (+$+C;<d<(Y!
~:~:~:~::~XyW:::(JdUTYYYYTYTYUNyyZyZyWRuHKuuuXRuuuXY;:jt::;?NNz================?===zyW5XykyyyyWHyyHXuuXuukQH9^...`. (JSzvY;<d>J3.`
::~::~:~::dyW:~(d1::::::::::;:dkyyyyyWWuXHkXkXVYUE<:::Z:::::?M#=======?==?==?======dyD:XyHyZyyKyyWIZXkXKX#^..``...(J3;;;;;;d-J>!..
~::~::~:~:(ky$(D?;I;::::::::::<NyyZyyyH9<dn:;:<J3:;;:+K;::::::?S==?==?============zXWI:XWHyyyWHZyW<:;<yHY..`..`.`(>;:;:;;:+t.$;~``
:~~:~::~::(HySd_<:?I::;::::::::JkyyZyyWR;<H<:jZ+++1<<<H;::;::;::?z=======?=====uZ3:dWI;WXWZyyHyyyK::;+W=.`.``....J;:;;:;;;J` >;~..
:~::~:~:~::XyW'` <:j<::::;:::;:<HyyyZyyk<:dkj9>:;::::<H;::;:;::;<jHmx======udT3::::JWb:HyyyyWWyyyb<:;J~.`.`..`..j3;:;:;:<JiJ3Z+-.`
~::~:~::~:~JWF ```_:X1z&++<;::::JkyyyyyVn+JW$;::::::;+H<::<_~~~(dHHMCR==dMHmHe:_```JWm<HyyZWHyZyW3O+>.`.`..`...J6;:;;;:jdJ;;;<>3..
:~~::~:~(vYTC1OI-.`-?<::::<?71++;WyZyyyWk:jyP:;<:;;::+M>;!````.XuZK?SX1zJWHmmHs_`.,=`` ~7TWWyyyyW<jC.`.`.`.``..@;;;:;++TC;;:;<-.`.
::~::::(izrOz+?>?zT+Jj::::::;::::?HyZyZyW2jyb:;:`_<::<MR~````.XuXWmmmgggHHWHmmge?! J<<_``.7WyWDj'...`..`...`.P;:<+7;;;;:;:;<_`.t
~:~:(Y6YTUU99XAz>??>?Us<;;x;:;::::dWyyyyWSdyR:<_```_:;HH.```.XZXf?7THHmH9Y"TWM= `X:<``````_T<_.``.`.`.`....I<JC;;;:;:;;;:~.(^`
:~(J(?>>?>?>>>>1T9e+>???G+j+::::::<HyyyyWWWyW:+_```` ~jHr``.HZuK;:<+vCG.` .dHH d+<.``````,.`..`..`.`.``..<<;;:;:;;:;:<_._```
:(d->??>??>?>??>>?>>>+>>?1Gy:::;::;?yyZyWHHyW<z_`````` SX..KuuV<::v~~((mJHkkkH (J+/~.`` /.`.`..`.`..`..`J;;::;:;;:;;<..:````
z1uaaggwZCuu&+>??>>??>vGxrrrX+::::::4yyyyHyyWII````````(XGKuXW#7=!` (kkkkkkH .;:<T,<.>.`.`.``.`.`.`...P;;:;;:;:;;<_(^`````
uuX0uXQXVVT9WAdVV&x?>>?>?4yrrvW;:::;(WyZyWyyWrS````````.HuuX#H: ,kkkkkkH_ <::_ W>.`..`..`..`.`..`J<;:;;:;;:;;-J!``````
XX9C11>??>>?>?4uXWHAwOx?1zdHyrrG<;:::vyyyWHyyDw``....,..dkXK<+< ,qkkkkkH_ >;+v7'.`.`..`..`.`..`.-C;:;:;;:;;:jC````````
>?>>+1ug&g&+>??vXuuuuXUAXyrrdHwwb::::<WkyyHQKYYT1???>?>??>?13?[ ,qkkkkkH} ?!..``.`.``.``.`..`...<;:;;;:;;;j/~`````````
UQgMHHHH@HHHMHe+?WuuuuuuuuOZQwWHdc:;:<jHB6<>?>?>?>>>?>>>>>>?>>S ,qkkkkkH[ ...`..`...`..`..`.`.v<:;;:;;;<+7````````````
HMMMHBYMMMMkkkkHUAWkuuuuuXkYY1??+OTmVSryT1>>>?>>?>?>>?>?>?>>??d ` .qkkkkqk] .;.`.`.``..`..`.`.J3;:;:;<<(v=:`````````````
1>>?>>?>v&7TMHHStrZHmuXk9z?>>>?>uUwwwV3>>?>?>>?>>?>?>>?>?>?>>>J- .HkkkkkkE L..`..`.``.`. .JC;;;<!_(JY:~/``````````..``
>zzzzzz+>?vzrrWHmAgkMB3?>>>>??uUrwZC?>?>?>?>?>?>?>>?>?>>>?>?>?d] HkkkkkqH. j_.`.`...`.`.?<<<~_ .JW<::~.!````````./` ``
>??1z7TWAAyOWgYYCjd5?>>?>?>?+dXwV1?>>?>>>?>>?>>?>>?>>?>?>>?>?>dD XqkkkkkH[ ,c_..`.`..`.`.....JD::X::: /```````./_.,zOT
?>>>?>??udY6??+ud3?>>?>>?>?>7C???>>?>>?>>?>?>?>>?>>?>>?>?>>?>?JH. ` ,qkkkkkkb P:<-...---.-!!````z+;K::<._`````.-Y1?>?>?>
zzzuz&v6?1+zrQY1?>>?>>?>>?>>?>>>>>?>?>?>?>>>?>?>?>?>?>>?>?>>>?j#] .HkkkkkqH. ` u;j+gV"=_:>< `````.b;@;:<_```..1?>>>>>>?>>
>??xC>>jrrrQ91??>>>?>?>?>>?>>?>?>>?>>?>>>?>?>>>?>>?>>?>>?>?>?>jKS ` Hkkkkkkq{````` ,$<::;_``{+;_``````J+b::<``.J<??>?>?>>>>>?
1z1>?jrrrAY1?>>>??>>?>>?>?>>?>?>?>>?>>?>?>?>?>?>>?>?>?>?>>?>>??Nd,` ```dkkkkkkkb````````S:::::.`~(:<``````.PX;:<.1?>>?>?>?>?????1
?uy0rrrw91>?>?>>>?>>?>?>>?>>?>>?>>?>?>>>?>>>?>>?>>?>>>?>>?>?>?>drn``````(qkkqkkkH-```````(c;:::<. d::.``````S?2+1>?>?>?+&ggw0VC111
VwrrrwV1?>>>?>??>>?>>?>>?>?>>?>>?>>?>?>>?>>?>?>?>?>>?>>?>>?>>>?JkZ;`````,Hkkkkkkkh,```````.1+;:::;d::_``````(+C+&uQdY961>?>>?>>>>>
wwwwZ<>>>?>?>1+&&&&x&+??>>?>>?>?>>?>>?>>?>?>>?>>?>>?>?>?>?>>?>>>OrG.`````4qkkkkkkkqn.``````` !+::2P:::.```` .kkVY1>?>>?>>>>?>>?>?>
11??>>>?>>?>?>1zOOrOOvz1?>>>?>>??++??>??>?>?>>?>>?>>?>>>?>>?>????zzL``````.4kqkkkkkkHa,````````?jw3:;;<````./6?>>?>>>>>?>>?>>>>?>>
*/
/// @file xor128.hpp
/// @brief 疑似乱数生成
/// @brief xor shift による疑似乱数を生成する
uint64_t Xor128() {
static bool flag = false;
static uint64_t x = 123456789, y = 362436069, z = 521288629, w = 88675123;
if (!flag) {
w = time(0);
flag = true;
}
uint64_t t = x ^ (x << 11);
x = y;
y = z;
z = w;
return w = (w ^ (w >> 19)) ^ (t ^ (t >> 8));
}
/// @brief 0 以上 n 未満の整数から乱数を生成する
uint64_t Xor128(uint64_t n) { return Xor128() % n; }
/// @brief [l, r) の範囲の整数から乱数を生成する
uint64_t Xor128(uint64_t l, uint64_t r) { return Xor128(r - l) + l; } // [l, r)
/// @brief 0 以上 1 未満の浮動小数点数から乱数を生成する
double Xor128Prob() { return (double)Xor128() / (1LL << 32); }
/// @file bins.hpp
/// @brief 二分探索
/// @param ok `judge` が true になる値
/// @param ng `judge` が false になる値
/// @param judge 判定関数
/// @return `judge(x)` が true になる境界値
template <typename T, typename Judge>
T BinarySearch(T ok, T ng, Judge judge) {
while (abs(ok - ng) > 1) {
T mid = (ok + ng) / 2;
(judge(mid) ? ok : ng) = mid;
}
return ok;
}
/// @brief 回数指定二分探索
/// @param ok `judge` が true になる値
/// @param ng `judge` が false になる値
/// @param judge 判定関数
/// @param iter 探索回数
/// @return `judge(x)` が true になる境界値
template <typename T, typename Judge>
T BinarySearchIteration(T ok, T ng, Judge judge, int iter = 100) {
while (iter--) {
T mid = (ok + ng) / 2;
(judge(mid) ? ok : ng) = mid;
}
return ok;
}
int main() {
ll N;
cin >> N;
vector<ll> X(2 * N), Y(2 * N);
for (int i = 0; i < 2 * N; i++) cin >> X[i] >> Y[i];
const int mx = 1e5;
while (true) {
ll A = Xor128(mx), B = Xor128(mx);
auto count = [&](ll c) {
ll ans = 0;
for (int i = 0; i < 2 * N; i++) {
ll val = A * X[i] + B * Y[i] + c;
if (val > 0) ans++;
}
return ans;
};
auto f = [&](ll c) { return count(c) >= N; };
ll res = BinarySearch(mx, -mx, f);
bool ok = true;
for (int i = 0; i < 2 * N; i++) {
ll val = A * X[i] + B * Y[i] + res;
if (val == 0) ok = false;
}
if (count(res) != N) ok = false;
if (ok) {
cout << A << ' ' << B << ' ' << res << endl;
return 0;
}
}
}
Today03