题目描述
农民约翰的新谷仓由N个巨大的圈组成(2<=N<=3,000,000),编号为0..N−1,失速点N−1与失速点0相邻
在每天结束的时候,FJ的奶牛一个接一个地回到谷仓,每个奶牛都有一个它们想要占据的首选马厩。
然而,如果一头奶牛喜欢的牛栏已经被另一头奶牛占用了,她就会从这个牛栏连续向前扫描,直到她找到第一个空闲的牛栏,然后她就会申请。如果她扫描过了失速N−1,她会从失速0继续扫描。
给定每头奶牛的首选牛栏,请确定在所有奶牛返回牲棚后仍未占用的牛栏的最小指数。请注意,这个问题的答案与奶牛返回谷仓的顺序无关。
为了避免读取大量输入的问题,这个问题的输入以简洁的格式指定,使用K行(1<=K<=10,000)每个形式:
Xyab
其中一条线指定XY头奶牛的首选牛栏:X头奶牛偏好f(1)的每个牛栏。f(Y),其中f(i)=(Ai+B) mod n。A和B的取值范围为0∼ 1000,000,000。
不要忘记所有问题的标准内存限制是64MB。
约翰的谷仓中有N(2<=N<=3,000,000)个房间,编号0到N−1,这些房间排布成环状,编号0的和编号N−1的相邻。
每天傍晚,奶牛们一只一只排队回到谷仓,每头奶牛都有一个喜欢的房间,但是,如果它喜欢的房间已被其他奶牛占了,它会向前挨个探索其他房间(如果它探索过了N−1号房间,它会继续探索0号房间,以此继续下去)直到探到第一个没有被占用的房间,这时它会宣布占用这个房间。
告诉你每头奶牛喜欢的房间,当所有奶牛都找到房间后,剩下的没被占用的房间中,编号最小的是哪个。很明显,问题的答案与奶牛进入谷仓的顺序无关。
为避免输入内容过多。本题的输入数据采用一种简洁的方式:一共K(1<=K<=10,000)行,每行格式如下:
XYAB
表示有Y批奶牛,每批X头,也就是总共X∗Y只奶牛喜欢的房间号。Y批奶牛编号1到Y,第i批X头奶牛喜欢的房间号为(A×i+B) Mod N.
A和B的取值范围为0...1,000,000,000
注意,只有64M的空间。
输入格式
第一行:两个用空格分隔的整数:N和K。
第2..1+K:每一行包含整数XY AB,解释如上。所有这些品系指定的奶牛总数最多为N−1头。奶牛可以通过几条线添加到同一个畜栏中。
输出格式
第一行:空置摊位的最低指数。
样例
输入样例
10 3
3 2 2 4
2 1 0 1
1 1 1 7
输出样例
5