logo AlgoBeat OnlineJudge
登录 注册

#10367. [htoj P12565] 样品库

内存限制:512 MiB 时间限制:4000 ms 输入文件:sample.in 输出文件:sample.out
题目类型:传统 评测方式:文本比较
上传者: htoj

题目描述

Cuber QQ 正在管理一个很大的实验样品库。每个样品都有一个位置坐标和一个浓度。样品的浓度是一个分数。

实验仪器会不断发来查询,每次查询给出一个坐标区间和一个浓度阈值。Cuber QQ 需要知道:有多少个样品的位置落在这个区间内,并且浓度不超过给定阈值。

麻烦的是,实验仪器为了防止提前分析查询序列,会把每条记录加密。第 条记录的真实含义依赖上一条查询的答案,因此 Cuber QQ 必须按顺序处理这些记录。

给定常数:
,以及

共有 个样品。第 个样品有坐标 和浓度 。样品由输入中的九个整数 生成:

,先令

然后更新

因此一定有

接下来有 条加密记录。设上一条真实查询的答案为 last,初始时 last = 0。处理第 条记录前,先计算

条记录包含五个整数 。令

数据保证:存在一个整数 ,满足 ,使得前 条记录解密后 ,第 条记录解密后 。第 条记录称为终止记录。终止记录之后的输入无意义,可以忽略。

  • 如果 ,程序结束,不再输出。
  • 如果 ,这是一条真实查询。计算

你需要输出满足下面两个条件的样品个数:

输出答案后,令 last 等于本次答案,然后继续处理下一条记录。

输入格式

从文件 sample.in 中读入数据。

第一行两个整数 ,表示样品数量和加密记录数量。

第二行九个整数 ,含义见题面。

接下来 行,每行五个整数 ,表示一条加密记录。

输出格式

输出到文件 sample.out 中。

对每条真实查询输出一行一个整数,表示满足条件的样品个数。

遇到第一条终止记录后,程序应立即停止处理,不再输出。

样例

输入

5 6
10 1 10 1 0 1 2 0 0
8075442 8075442 126310770 662905497 689438397
212647068 212647082 544977254 954235552 538452823
239983326 239983355 688748119 958023887 640167611
267319584 267319584 832519029 961812218 741882399
383273525 383273525 113737584 109371398 717247006
123 456 789 10 11

输出

2
2
2
3

数据范围与提示

样例解释

生成的五个样品分别为:

编号
1 10 1
2 20 3
3 30 5
4 40 7
5 50 9

四条真实查询分别等价于:

查询 坐标区间 浓度阈值 答案
1 4 2
2 6
3 8
4 6 3

第 5 条记录解密后为终止记录,第 6 条记录无意义。

数据规模与约定

  • 第一条终止记录一定出现在前 条记录中。
  • 外,输入中的所有整数均在 内。