【問題描述】
有 n 只青蛙位於座標軸 ox 上,對於每只青蛙,有兩個已知值 xi、ti,表示第 i 只青蛙在座標的位置(各不相同)以及它的舌頭的長度。同樣有 m 只蚊子乙隻接乙隻的落到座標軸上,對於每只蚊子,有兩個已知值, pj 表示第 j 只蚊子所在的位置,bj 為第 j 只蚊子的重量。青蛙和蚊子表示為座標上的點。
如果蚊子和青蛙在同一位置或者在右邊,青蛙可以吃掉蚊子,它們之間的距離不超過青蛙舌頭的長度。
如果有幾隻青蛙都能在某一時刻吃到乙隻蚊子,最左邊的青蛙就會吃掉它(最小的 xi)。吃完蚊子後,青蛙的舌頭將增加蚊子重量的長度,在之後,青蛙又能夠吃其他蚊子(在舌頭長度增加之後)。
在所有蚊子落下以及青蛙吃掉所有可能的蚊子之後,對於每個青蛙,輸出兩個值,即吃蚊子的數量以及舌頭的長度。
每只蚊子只有在青蛙吃完之前所有可能的蚊子之後才會落到座標上,蚊子的值是按其落到座標軸上的順序給出的。
【輸入形式】
輸入的第一行為兩個整數(1 ≤ n,m ≤ 2*105),表示青蛙和蚊子的數量。
接下來的 n 行,每行兩個整數 xi、ti(0 ≤ xi、ti ≤ 109),表示第 i 只青蛙所在的位置以及它的舌頭的初始長度,輸入保證所有的 xi 互不相同。
接下來的 m 行,每行兩個整數 pj、bj(0 ≤ pj、bj ≤ 109),表示第 j 只蚊子落下的位置以及它的重量。
【輸出形式】
輸出為 n 行,第 i 行包含另兩個整數值 ci、li,表示被第 i 只青蛙吃掉的蚊子數量以及最終的青蛙的舌頭長度。
【樣例輸入1】
4 610 2
15 0
6 10 1
110 10
1 16 0
15 10
14 100
12 2
【樣例輸出1】
3 114
1 10
1 11 2
【樣例輸入2】
1 210 2
20 2
12 1
【樣例輸出2】
1 3
#include
#include
using namespace std;
struct fog
;struct smo
;fog:
:fog()
smo:
:smo()
bool cmp1
(fog a,fog b)
bool cmp2
(fog a,fog b)
intmain()
for(
int i =
0; i < n; i++
)sort
(f, f + n, cmp1)
; smo *smo = new smo[m]
;for
(int i =
0; i < m;i++)}
}}}sort
(f, f + n, cmp2)
;for
(int i =
0; i < n;i++
)return0;
}
C語言與練習題
題目描述 計算字串最後乙個單詞的長度,單詞以空格隔開。輸入描述 一行字串,非空,長度小於5000。輸出描述 整數n,最後乙個單詞的長度。示例1 輸入 hello world 輸出 5 include intmain else printf d length return0 題目描述 寫出乙個程式,接...
C 指標練習題
1.耶穌有13個門徒,其中有乙個就是出賣耶穌的叛徒,請用排除法找出這位叛徒 13人圍坐一圈,從第乙個開始報號 1,2,3,1,2,3 凡是報到 3 就退出圈子,最後留在圈內的人就是出賣耶穌的叛徒,請找出它原來的序號 使用迴圈鍊錶實現要求 lzy 2011 8 1 include include us...
練習題c (一)
1.計算字串最後乙個單詞的長度,單詞以空格隔開。include include using namespace std int main 2.計算最少出列多少位同學,使得剩下的同學排成合唱隊形 說明 n位同學站成一排,老師要請其中的 n k 位同學出列,使得剩下的k位同學排成合唱隊形。合唱隊形是指這...