CFCF1519E.Off by One

省选/NOI-

官方

通过率:0%

AC君温馨提醒

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

题目描述

在一张无限大的平面上有 nn 个点。第 ii 个点的坐标为 (xi,yi)(x_i, y_i),其中 xi>0x_i > 0yi>0y_i > 0。这些坐标不一定是整数。

每次操作你可以进行如下步骤:

  • 选择两个不同的点 aabbaba \neq b);
  • 将点 aa(xa,ya)(x_a, y_a) 移动到 (xa+1,ya)(x_a + 1, y_a)(xa,ya+1)(x_a, y_a + 1)
  • 将点 bb(xb,yb)(x_b, y_b) 移动到 (xb+1,yb)(x_b + 1, y_b)(xb,yb+1)(x_b, y_b + 1)
  • 移除点 aabb

但是,只有当存在一条直线经过点 aa 的新坐标、点 bb 的新坐标以及 (0,0)(0, 0) 时,才能进行上述操作。

否则,操作无法进行,点 aabb 保持原坐标不变。

点的编号在移除后不会改变。被移除的点不能再被选中。注意,每次操作必须移动两个点,不能让它们保持原地不动。

你能进行的最多操作次数是多少?这些操作分别是哪些?

如果有多种方案,输出任意一种均可。

输入格式

第一行包含一个整数 nn1n21051 \le n \le 2 \cdot 10^5),表示点的数量。

接下来的 nn 行,每行包含四个整数 ai,bi,ci,dia_i, b_i, c_i, d_i1ai,bi,ci,di1091 \le a_i, b_i, c_i, d_i \le 10^9)。第 ii 个点的坐标为 xi=aibix_i = \frac{a_i}{b_i}yi=cidiy_i = \frac{c_i}{d_i}

输出格式

第一行输出一个整数 cc,表示你能进行的最多操作次数。

接下来的 cc 行,每行输出两个整数 aabb1a,bn1 \le a, b \le naba \neq b),表示本次操作中被移除的两个点。对于每一对 (a,b)(a, b),应当存在一种移动方式,使得点 aabb 的新坐标与 (0,0)(0, 0) 共线。每个被移除的点不能再被选中。

如果有多种方案,输出任意一种均可。操作顺序和每次操作中点的顺序均可任意。

输入输出样例

  • 输入#1

    7
    4 1 5 1
    1 1 1 1
    3 3 3 3
    1 1 4 1
    6 1 1 1
    5 1 4 1
    6 1 1 1

    输出#1

    3
    1 6
    2 4
    5 7
  • 输入#2

    4
    2 1 1 1
    1 1 2 1
    2 1 1 2
    1 2 1 2

    输出#2

    1
    1 2
  • 输入#3

    4
    182 168 60 96
    78 72 45 72
    69 21 144 63
    148 12 105 6

    输出#3

    1
    2 4

说明/提示

以下是第一个样例中被选中进行操作的点及其移动示意图:

首页