CF1346H.Game with Segments

省选/NOI-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Alice 和 Bob 在玩一场游戏。

他们手里有两组坐标轴上的线段:一组是 $ n $ 个初始线段:$ [l_1, r_1] ,, [l_2, r_2] ,……,,……, [l_n, r_n] $;另一组是 $ m $ 个终止线段:$ [L_1, R_1] ,, [L_2, R_2] ,……,,……, [L_m, R_m] $。游戏开始时,他们会选择一个初始线段作为当前线段。

Alice 和 Bob 轮流缩小当前的线段:Alice 先动,Bob 后动,然后Alice再动,以此类推。每一轮中,当前玩家可以选择将当前线段的左端点加 $ 1 $,或者将右端点减 $ 1 $。因此,如果当前线段是 $ [c_l, c_r] $,它会变成 $ [c_l + 1, c_r] $ 或 $ [c_l, c_r - 1] $。

如果在游戏开始时或 Bob 操作之后,当前线段与某个终止线段重合,Bob 就赢了。如果当前线段退化为单点(即 $ c_l = c_r $),而 Bob 还没有赢,则 Alice 获胜。如果 Alice 操作后当前线段重合于某个终止线段,游戏继续进行。

两位玩家都以最优方式进行游戏——如果有胜算,他们会采取能在最短回合内取胜的策略;如果无法获胜,他们会尽可能延长游戏时间,通过最大化操作次数来延迟失败。

对于每个初始线段,你需要判断如果选择该线段作为起始线段,最后谁会胜出。如果是 Bob 获胜,还需计算 Alice 在失败前进行的操作次数。

输入格式

第一行输入两个整数 $ n $ 和 $ m (( 1 \le n, m \le 2 \cdot 10^5 $),分别表示初始线段和终止线段的数量。

接下来有 $ n $ 行,每行两个整数 $ l_i $ 和 $ r_i (( 1 \le l_i < r_i \le 10^6 $),表示第 $ i $ 个初始线段的两个端点。

紧接着是 $ m $ 行,每行两个整数 $ L_i $ 和 $ R_i (( 1 \le L_i < R_i \le 10^6 $),表示第 $ i $ 个终止线段的两个端点。

请注意,输入中可能会有重复的线段。

输出格式

输出 $ n $ 个整数,第 $ i $ 个整数表示如果选则第 $ i $ 个初始线段开始游戏的结果:

  • 如果 Alice 胜出,输出 -1;
  • 如果 Bob 胜出,输出 Alice 在败北前的操作次数。

本翻译由 AI 自动生成

输入输出样例

  • 输入#1

    1 1
    4 7
    4 7

    输出#1

    0
  • 输入#2

    1 2
    2 5
    2 4
    3 5

    输出#2

    -1
  • 输入#3

    2 1
    1 5
    1 4
    2 3

    输出#3

    -1 1

输入解题思路,AI测评打分。不知道怎么写?

首页