結果
| 問題 |
No.91 赤、緑、青の石
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2018-03-22 14:27:52 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 5,000 ms |
| コード長 | 898 bytes |
| コンパイル時間 | 1,658 ms |
| コンパイル使用メモリ | 168,652 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-06-24 07:14:11 |
| 合計ジャッジ時間 | 2,627 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 28 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
int C[ 3 ];
void Cnt( int &iA, int &iB, const int X, const int iNum )
{
if( X > iNum )
iA += ( X - iNum ) / 2;
else if( X < iNum )
iB += ( iNum - X );
}
bool bChk( const int R, const int G, const int B,
const int iNum )
{
int iA;
int iB;
iA = 0;
iB = 0;
Cnt( iA, iB, R, iNum );
Cnt( iA, iB, G, iNum );
Cnt( iA, iB, B, iNum );
return (bool) ( iA >= iB );
}
bool bChk( const int iNum )
{
return bChk( C[ 0 ], C[ 1 ], C[ 2 ], iNum );
}
int main()
{
int R;
int G;
int B;
int iNum;
int iTop;
int iBtm;
cin >> C[ 0 ];
cin >> C[ 1 ];
cin >> C[ 2 ];
sort( C, C + 3 );
iBtm = C[ 0 ];
iNum = C[ 1 ];
iTop = C[ 2 ];
while( iBtm + 1 < iTop )
{
if( bChk( iNum ) )
iBtm = iNum;
else
iTop = iNum;
iNum = ( iBtm + iTop ) / 2;
}
if( bChk( iTop ) )
cout << iNum << endl;
else
cout << iBtm << endl;
return 0;
}