タイトル説明
牛が出て、再び彼らのひづめを行使しています!N牛があります。
無限長の単一レーントラックにジョギング(1 <= N <= 100,000)。
それぞれの牛はトラック上の異なる位置で開始し、いくつかの牛はジョギング
異なる速度で。
トラックで唯一のレーンでは、牛はお互いを渡すことはできません。とき
速く牛は他の牛に追いつき、彼女は避けるようにスローダウンしています
同じ実行グループの一部になって、他の牛に実行しています。
牛は、T分(1 <= T <= 1,000,000,000)をするために実行されます。お願いします
ファーマージョンは、この時点で残されますどのように多くのグループを判断するのに役立ちます。
彼らはである場合、2頭の牛が同じグループの一部と考えるべきです
T分の終わりに同じ位置。
N(1 <= N <= 100,000)単一の長いトラックのジョギング牛であり、各牛の開始位置が異なっています。それは、単一のトラックがあるので、それらのすべてがお互いを越えて行くことはできません。速い速度は、他の牛と牛をキャッチアップするとき、彼は同じ速度のクラッシュをドロップする必要があります。私たちは逃げ出し、これらの牛グループと同じ場所と同じ速度。
チームに分割されますどのように多くの牛T(1 <= T <= 1,000,000,000)を時間を計算します。
入力形式
INPUT:(ファイルcowjog.in)
入力の最初の行は二つの整数N及びT.が含ま
次のN行はそれぞれの初期位置と速度を含みます
シングル牛。位置は非負整数であり、速度が正であります
整数; 両方の数値は最大10億です。すべての牛はで開始します
異なる位置、及びこれらの中に昇順に与えられます
入力。
出力フォーマット
OUTPUT:(ファイルcowjog.out)
T分後に残っているどのように多くのグループを示す単一の整数。
サンプル入力と出力
5 3 0 1 1 2 2 3 3 2 6 1
3
書式#include <アルゴリズム> 書式#include <iostreamの> の#include <CStringの> の#include <cstdioを> する#include <cmath> の#include <キュー> std名前空間を使用しました。 長い長いN、T、最後[100610]。 int型ANS = 1; 構造体牛{ 長い長いSPE、POS。 } [100610]。 長い長い(){読み取り 長い長= 0、B = 1。 チャーCH = GETCHAR()。 一方、((CH <48 || CH> 57)&& CH = ' - '!){ CH = GETCHAR()。 } (CH == ' - ')なら、{ B = -1。 CH = GETCHAR()。 } 一方、(CH <48 || CH> 57){ CH = GETCHAR()。 } (CH> 47 && CH <58){一方 、A = A * 10 + CH-48。 CH = GETCHAR()。 } * bを返します。 } int型のmain(){ N =(読み取り)、tは読み取り=(); 以下のために(INT i = 1; iが<= N; iは++){ [i]は.POSの=(読み取り)、[I] .speが読み取ら=(); 最後[I] + [I] .spe * T [i]は.POSを=。 } ため(INT I = N-1、I> = 1; I - ){ IF(最終[I]> =最後[I + 1]){ 最後[I] =最後[I + 1]。 } {他 ++ ANS。 } } のprintf( "%dの"、ANS)。 }