C1490 [HEOI2013]Segment

内存限制:256 MB 时间限制:1000 ms

题目描述

要求在平面直角坐标系下维护两个操作:

  1. 在平面上加入一条线段。记第 $i$ 条被插入的线段的标号为 $i$。

  2. 给定一个数 $k$,询问与直线 $x = k$ 相交的线段中,交点最靠上的线段的编号。

输入格式

第一行一个整数 $n$,表示共 $n$ 个操作。接下来 $n$ 行,每行第一个数为 $0$ 或 $1$。

若该数为 $0$,则后面跟着一个正整数 $k$,表示询问与直线 $x = ((k +last\_ans–1)\%39989+1)$ 相交的线段中交点(包括在端点相交的情形)最靠上的线段的编号,其中 $\%$ 表示取余。若某条线段为直线的一部分,则视作直线与线段交于该线段 $y$ 坐标最大处。若有多条线段符合要求,输出编号最小的线段的编号。

若该数为 $1$,则后面跟着四个正整数 $x_0, y_0, x_1, y_1$,表示插入一条两个端点为 $((x_0+last\_ans-1)\%39989+1,(y_0+last\_ans-1)\%10^9+1)$ 和 $((x_1+last\_ans -1)\%39989+1, (y_1+last\_ans-1)\%10^9+1)$ 的线段。其中 $last\_ans$ 为上一次询问的答案。初始时 $last\_ans=0$。

输出

对于每个 $0$ 操作,输出一行,包含一个正整数,表示交点最靠上的线段的编号。若不存在与直线相交的线段,答案为 $0$。

样例

样例输入 1

6 1 8 5 10 8 1 6 7 2 6 0 2 0 9 1 4 7 6 7 0 5

样例输出 1

2 0 3

提示