問題一覧 > 通常問題

No.180 美しいWhitespace (2)

レベル : / 実行時間制限 : 1ケース 5.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 105
作問者 : ぴろず
14 ProblemId : 425 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2015-11-14 17:48:27

問題文

太郎君の弟の次郎君は難解プログラミング言語であるWhitespaceで美しいプログラムを書くことに熱中しています。
Whitespaceでは、スペース・タブ・改行のみを構文に使用し、その他は無視します。

太郎君はソースコードに全角スペースを混ぜていましたが、次郎君はそれだとインタプリタによってはエラーになることに気が付きました。
次郎君はN行からなるソースコードを書きました。i行目にはスペースがai個、タブがbi個含まれます。ソースコードにスペース・タブ・改行以外の文字は含まれません。

次郎君はエディターのタブ幅x(xは正の整数)を変えることによって、ソースコードの「醜さ」を最小にしようとしています。
ソースコードの「醜さ」は、ソースコードの行の幅の最大値から最小値を引いたものです。
より正確に言うと、タブ幅x(xは正の整数)に対して、「醜さ」f(x)は次の式で与えられます。
f(x)=(max1iN(ai+bix))(min1iN(ai+bix))
普通のエディタとは異なり、タブの位置などは幅に影響せず、スペースとタブそれぞれの個数のみから「醜さ」が決まることに注意してください。

ソースコードの「醜さ」f(x)を最小にする正の整数xのうち、最も小さいものを出力するプログラムを作成してください。

入力

N
a1 b1

aN bN
1行目に次郎君が書いたソースコードの行数Nが与えられます。
続くN行は、ソースコードの行ごとの情報です。i行目にはスペースがai個、タブがbi個あることを表します。

1N1000
0ai,bi109
次郎君のソースコードにはスペース・タブ・改行以外の文字は含まれません。
次郎君のソースコードがWhitespaceの文法的に正しいとは限りません。

出力

ソースコードの「醜さ」f(x)を最小にする正の整数xのうち、最も小さいものを出力してください。 最後に改行してください。

サンプル

サンプル1
入力
2
1 1
3 0
出力
2

1行目にはスペースが1個、タブが1個あります。
2行目にはスペースが3個、タブが0個あります。
タブ幅を2にすると、1行目の幅が1+1×2=32行目の幅が3+0×2=3となり、「醜さ」は0になります。
また、「醜さ」を0にするタブ幅は2のみであることがわかるので、2を出力します。

サンプル2
入力
4
0 0
0 0
0 0
0 0
出力
1

4行全てが空行です。
この場合任意のx(1)に対してf(x)=0です。
f(x)を最小にするxのうち最小のものを出力するので、1を出力します。

サンプル3
入力
2
1 4
9 1
出力
3

f(x)が最小値をとるのはx=3のときのみで、このときf(x)=1312=1です。

サンプル4
入力
10
4321123 46
9506183 4
2469242 61
1111211 72
1234721 71
3333474 54
1111260 72
123559 80
1728545 67
7407433 21
出力
123456

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。