P2095栄養、ダイエット

タイトル説明

Mr.Lは、SFIを完了しています。

重量を得るために、Mr.Lは、より多くの脂肪を食べたいです。しかし、我々は、それは他の栄養素の不足につながる、その場合には、高脂肪食品を、食べることができません。研究を通じてMr.Lが見つかりました:食品の特定の種類の本当の栄養と食事の規定は、コピーの1回限りの数よりも多くを食べるべきではありません。魚が複数の部分を食べてはいけない例えば、それは食事です、肉が複数の部分を食べてはいけない、卵は野菜が二つ以上のコピーを食べてはいけない、複数の部分を食べてはいけません。Mr.LはもちろんMr.Lの食物摂取が制限され、栄養食事療法の場合にはより多くの脂肪を食べたいです。

入力形式

最初の行は、3つの正の整数N(n≤200)、M(m≤100)及びk(k≤100)を含みます。Mr.L食品のn種類は、食品のN k個のクラスにどの種類を選択しながら、食事Mr.L食品Mを食べることができる部分を表します。2行目は、せいぜい10 K kに1の食べ物を食べることができるコピーの最大数を表す正の整数が含まれていません。次のn行はそれぞれ前記ai≤100、bi≤k、AI及びBIがカテゴリに属する​​食品脂肪指数、それぞれ、2つの正の整数を含みます。

出力フォーマット

すなわち、デジタルMr.Lが食べると最高できる脂肪指数が含まれています。

サンプル入力と出力

入力#1
6 6 3 
3 3 2 
15 1 
15 2 
10 2 
15 2 
10 2 
5 3
出力#1
60

書式#include <アルゴリズム> 
書式#include <iostreamの> 
の#include <CStringの> 
の#include <cstdioを> 
する#include <cmath> 
の#include <キュー> 
std名前空間を使用しました。
[10610] B INT、ANS。
構造体TT { 
    int型Y、Z。
} [10610]。
int型CMP(CONST TT&、CONST TT&B){ 
    戻りAY>によって、
} 
読み取るINT(){ 
	int型A = 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 * 10 + CH-48。
		CH = GETCHAR()。
	} 
	* bを返します。
} 
int型のmain(){ 
    int型N、M、K。
    N =()、M = read()は、K =リードを読み取ります()。
    {ため(; iは= Kを<I ++はI = 1 INT)
        [I]を読み出す= B()を; 
    } 
    {ため(iは++; iがn = <I = 1 INT)
    	[i]を.Z読み取り=()、[I] .Y = read()は、
    } 
    ソート(A + 1、A + N + 1、CMP)。
    以下のために(; iは1 = int型<N =、iは++){ 
        IF(B [i]は.Z]> 0 && M> 0){ 
            B [i]は.Z] - 。
            M--; 
            ANS + = A [i]の.Y。
        } 
    } 
    のprintf( "%dの"、ANS)。
    0を返します。
}

  

おすすめ

転載: www.cnblogs.com/xiongchongwen/p/11517977.html