タイトル説明
麗江川が持つN- N-家は非常にユニークな宿から順に、その位置に応じてイン 1 〜1 N- n個を。各イン装飾トーンの特定の種類に応じて行われる(合計 k個のk個の種類が整数 0 0〜K-1 、K - 1が表す)、および各インは、コーヒーショップを有し、それぞれがそれ自身のコーヒーショップを有しています最小の消費。
麗江観光に2人の観光客と一緒に行くために、彼らは、同じトーンが好きな二つの異なるインを試してみたい、それが同じ2トーンの宿に住んでいたことを決めました。夜には、彼らはコーヒーショップ飲むコーヒーを選択しようとする、コーヒーショップを超えていない2軒の旅館の両方のライブ、コーヒーショップの最低消費の間に(彼らが住んでいた旅館を含む)の要件に位置している P-にp型を。
彼らは夜にあなたが最小消費量は超えていない見つけることができることを確実にするために、宿泊プログラムの合計選択肢である何を知りたいのp コーヒーショップのp元-一緒に。
入力形式
総行n + 1。
三つの整数の最初の行のn、K、PのN- 、K 、それぞれ空間、最高数、及び最低許容インのトーンの数で分離された各二つの整数の間のP、。
以下N- n番目、 I + 1 I + 1本のラインのそれぞれとの間の空間によって分離された2つの整数、I I号インパステル色で装飾さとI コーヒーショップ番号iインの最小消費。
出力フォーマット
整数、代替宿泊プラン表現の総数。
サンプル入力と出力
5 2 3 0 5 1 3 0 2 1 4 1 5
3
説明/ヒント
例説明[O]
2人は宿屋の同じトーンに住みたい、すべての代替施設のプログラムが含まれます:ライブインを①③、②④、②⑤、④⑤が、あなたは生きることを選択した場合4 4と5を、そして5旅館4 4と5 宿5の間コーヒーショップの最小消費がある4 4と最低の消費者は2耐えることができる3 $ 3、それが要件を満たしていません。したがって、最初の 3つの3つの方式は任意。
[データ範囲]
ために30 \%。3 0 データの%、あるN-≦100 N- ≤ 1。0 0。
以下のための50 \%。5 0 データの%は、存在するN-1、000 N- ≤ 1 、0 0 0。
以下のために100 \%。1 0 0 データの%、ある 2≤200,000,0≤n<K≤50,0≤p≦100、0≤ 2 ≤ N- ≤ 2 0 0 、0 0 0 、0 < K ≤ 。5 0 、0 ≤ P- ≤ 1 0 0 、0 ≤最小消費≦100 ≤ 1 0 0。
アイデア:
リニアは最後のすべてのレコードのメンテナンスを求め、現在の価格はに沿ったものである場合には、特定のスタイルの最後に出現する位置のために、各色の数のレコードが、発生したCNT
そして、それはたび値にこのスタイルの色に、前の累積的な答えを更新の数が登場していました
コード:
書式#include <cstdioを> する#include <iostreamの> 名前空間stdを使用。 const int型N = 100000; INT最後の[N]、合計[N]、CNT [N]、ANS、今。 N、K、P int型。 INTのmain() { int型の色、価格。 scanf関数( "%D%D%D"、&N&K&P)。 以下のために(INT i = 1; iが<= N; iは++) { scanf関数( "%d個の%のD"、および色、および価格)。 (価格<= p)は、今の場合= I; IF(最終[色<= NOW)和[カラー] = CNT [カラー]。 最後[カラー] = I。 ANS + =和[カラー]。 CNT [カラー] ++; } のprintf( "%d個の\ n"、ANS)。 0を返します。 }