torus711 のアレ

主に競技プログラミングの問題について書きます

Codeforces #169, A : Lunch Rush

概要

k 分間の休憩時間で、n 個ある飯屋のいずれかに昼食をとりに行きます。
各飯屋は f, t の二つの数値をもち、食事に t 分間かかり、f の満足度を得ます。
t が k を超える場合は、f - ( t - k ) の満足度を得ます。
最も満足度が高くなる飯屋を選んだ場合の満足度を求めよ。

概要

各飯屋について満足度を計算して、最大値をとります。

コード

typedef vector<int> VI;

#define REP( i, m, n ) for ( int i = (int)( m ); i < (int)( n ); ++i )
#define ALL( c ) (c).begin(), (c).end()

int main()
{
	cin.tie( 0 );
	ios::sync_with_stdio( false );

	int n, k;
	cin >> n >> k;

	VI fs( n ), ts( n );
	REP( i, 0, n )
	{
		cin >> fs[i] >> ts[i];
	}

	VI joy( n );
	REP( i, 0, n )
	{
		joy[i] = k < ts[i] ? fs[i] - ( ts[i] - k ) : fs[i];
	}

	cout << *max_element( ALL( joy ) ) << endl;

	return 0;
}