トピックはじめに
SJZEZとTSYZは、第2ラウンドは、SJZEZで自宅がTSYZホームで行われていたルールに従って、サッカートーナメントです。基準以下の結果:
- 目標の合計数の1に2つのゲームでより多くのゲームに勝つために。
- 目標の合計数と同じ政党、家庭内の他のパーティゲームに勝つために多くのゴールであれば。
- 2が同じであれば、勝者はランダムに生成されます= =
双方はレーテ倉の子供用の靴が知りたい、SJZEZキャプテンとして、ゲームを行いました:
第2フィールドSJZEZに(1)ボールの最小数を必要とする、ゲームに勝つことが可能です。
(2)多くのボールを超えていないか、第2のフィールドSJZEZに、TSYZは、ゲームに勝つために可能。
ゲームで知られている、ことができない目標の複数の\(30 \) 。
入力形式
最初の行の整数\(Tは\) 、試験データ点の集合を表します。
次\(T \) 、このような形態のようなゲームデータの設定された第1の場合で説明した文字列の行wccy's team played WHERE game, scored x goals, and conceded y goals.
ここでWHERE
あるhome
かaway
、のいずれかのhome
最初のゲームは、ホームSJZEZで行われる示し、away
それは最初のゲームがTSYZホームで行われる表します。\(X- \)、\ (Y- \)は、それぞれのチームの目標川倉の月、そしてお互いの目標を忘れてしまった、整数です。
出力フォーマット
出力\(T \)の線は、2つの整数を含む各行は、スペースで区切って、彼らは両方の質問への答えです。
データ範囲\(\&\)レビュー限度
各テストポイント(\ \ 1000; \ MS TEXTRM {} \)、\ (1 \; \ TEXTRMジブ} {\) 。
以下のための\(100 \%\)データ、\(1 \ルT \ル500 \)、\ (0 \ルX、Y \ル30 \) 。
分析
与えられた二つのサブトピックを指摘しました。私たちは分けて考えます。
少なくとも、勝つために可能になりますどのように多くのボールに取得します
私たちは、極端な思考を使用しています。反対側のいずれにも進出しない場合を考えてみましょう。
だから、私たちは小さなから大規模に列挙し、出力上の勝利のポイントを見つけるかもしれません。
しかし、構造上の自分の家にあるかどうか、それは影響力があります。だから我々は、分類を考慮する必要があります。
おそらく勝つためにどのように多くのボールを反対側にまで
同じ問題の息子。唯一のターンの方向を列挙する必要があり、他の側面全体ゴールラインということを前提としています。
コード
次のコードを貼り付けます。あなたが参照したい場合は、細部に注意を払うことができます。
#include <cstdio>
using namespace std;
const int max_ball = 30;
char place[10];
int main()
{
int n, pa, pb, ts;
scanf("%d", &n);
while (n--)
{
scanf("%*s %*s %*s %s %*s %*s %d %*s %*s %*s %d %*s", place, &pa, &pb);
if (place[0] == 'h')
{
for (ts = 0; ts <= max_ball; ts++)
{
if (pa + ts < pb)
continue;
if (pa + ts == pb && ts < pb)
continue;
break;
}
printf("%d ", ts);
for (ts = max_ball; ts >= 0; ts--)
{
if (pa + ts > pb + max_ball)
continue;
if (pa + ts == pb + max_ball && ts > pb)
continue;
break;
}
printf("%d\n", ts);
}
else
{
for (ts = 0; ts <= max_ball; ts++)
{
if (pa + ts < pb)
continue;
break;
}
printf("%d ", ts);
for (ts = max_ball; ts >= 0; ts--)
{
if (pa + ts > pb + max_ball)
continue;
break;
}
printf("%d\n", ts);
}
}
return 0;
}