[Poi2014]Solar lamps
时间限制:80s 空间限制:128MB
题目描述
Byteasar has a large and pretty garden. As he would like to be able to appreciate its beauty even after dusk, he installed lamps across the garden.
The lamps are directional, i.e., they illuminate only a certain angle, common to them all. Moreover, Byteasar has aligned them so that they all face the same direction. Last but not least, these are solar lamps, i.e., they come with solar panels but no batteries, strangely enough! You might think the panels are thus useless, and each lamp will require electricity at night, but not quite: A lamp will produce light if a sufficient number of lamps illuminate it.
By now, Byteasar has even come up with an order he is going supply the lamps with electricity, thus turning them on. For simplicity, we number the lamps from 1 to n in this order, i.e., the lamp no. i is supplied with electricity at time i. The only thing left for Byteasar (and you, of course!) is to figure out when exactly each lamp will start emitting light. Help Byteasar by writing a program that will determine the answer to this question.
Byteasar有一个美丽的大花园。因为他喜欢在黄昏后欣赏花园的美丽,他在花园中安装了许多盏灯。
这些灯是有方向的,它们只会朝一个确定的夹角内发光。而且,Byteasar把它们安放地很整齐,所以它们都面朝同一个方向。
这些灯都是太阳能灯,它们使用的是太阳能而不是电能。第i盏灯会发光当且仅当至少Ki盏灯照到了它或者它通了电。
现在,Byteasar将按1到n的顺序依次给每盏灯通电,即在第i个时刻给第i盏灯通电。
最后,Byteasar想知道每盏灯在哪一个时刻开始发光,请写一个程序回答这个问题。
输入格式
The first line of the standard input contains a single integer N(1<=N<=200 000): the number of lamps Byteasar installed. In the second line of input, there are four integers X1,Y1,X2,Y2(-10^9<=Xi,Yi<=10^9,(Xi,Yi<>(0,0) ), separated by single spaces, that describe the area illuminated by every lamp. Namely, if there is a lamp located at the point (x,y), then it illuminates the area (together with its edge) within the smaller of the two angles formed by two rays that both originate at (x,y) such that the i-th (for i=1,2) ray passes through(x+Xi,y+Yi). This angle is always smaller than 180 degrees.
The n input lines that follow specify the locations of the lamps: the i-th such line contains two integers Xi,Yi(-10^9<=Xi,Yi<=10^9), separated by a single space, that indicate that the lamp no. is located at the point (Xi,Yi). You may assume that no two lamps share their location.
The last line of the input contains N integers K1,k2…Kn(1<=Ki<=N), separated by single spaces, that signify that if the lamp no. i is in the area illuminated by at least Ki other lamps, then it will start emitting light as well.
第一行包含1个整数N(1<=N<=200 000),表示灯数。
第二行包含4个整数X1,Y1,X2,Y2(-10^9<=Xi,Yi<=10^9,(Xi,Yi<>(0,0)),描述每盏灯的照明范围。比如,有盏灯位于(x,y),则它会照亮在(x,y)到(x+X1,y+Y1)这条射线,(x,y)到(x+X2,y+Y2)这条射线之间(包括边界)的区域,这个角度在[0°,180°)之间。
接下来N行每行两个整数Xi,Yi(-10^9<=Xi,Yi<=10^9),表示第i盏灯的位置,保证没有两盏灯重合。
最后一行包含N个整数K1,K2…Kn(1<=Ki<=N),表示第i盏灯至少需要被几盏灯照到才会发光。
输出格式
Your program should print out to the standard output a single line with integers T1…Tn, separated by single spaces. The number Ti should be the time when the lamp no. i starts producing light.
输出一行N个整数T1...Tn,其中Ti表示第i盏灯开始发光的时刻。
样例输入
5 3 1 1 3 2 1 1 4 3 4 5 6 5 2 1 2 1 3 2
样例输出
1 2 1 2 5
提示
Explanation: At time 1 Byteasar powers on the lamp 1, which also causes the lamp 3 to produce light. Once the lamp 2 is powered on, the lamp 4 begins to emit light (being illuminated by lamps 1, 2, and 3).
题目来源
鸣谢 Claris