結果
| 問題 |
No.297 カードの数式
|
| コンテスト | |
| ユーザー |
小指が強い人
|
| 提出日時 | 2015-11-07 22:04:29 |
| 言語 | Ruby (3.4.1) |
| 結果 |
AC
|
| 実行時間 | 91 ms / 1,000 ms |
| コード長 | 1,134 bytes |
| コンパイル時間 | 107 ms |
| コンパイル使用メモリ | 7,424 KB |
| 実行使用メモリ | 12,288 KB |
| 最終ジャッジ日時 | 2024-12-26 02:23:54 |
| 合計ジャッジ時間 | 3,089 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 23 |
コンパイルメッセージ
Syntax OK
ソースコード
n = gets.to_i
c = gets.to_s.split
num = Array.new
opp = 0
opm = 0
op = 0
n.times do |i|
if c[i].ord >= "0".ord && c[i].ord <= "9".ord then
num.push(c[i].to_i)
else
if c[i] == "+" then
opp += 1
else
opm += 1
end
end
end
op = opp + opm
num.sort! {|a, b| b <=> a}
sum = 0
diff = num.length - op
diff.times do |i|
sum *= 10
sum += num[i]
end
max = sum
min = 0
op.times do |i|
if i < opp then
max += num[diff + i]
else
max -= num[diff + i]
end
end
if opm > 0 then
min = -sum + num[num.length - 1]
(op - 1).times do |i|
if i < opm - 1 then
min -= num[diff + i]
else
min += num[diff + i]
end
end
else
num.sort!
divn = op + 1
div = num.length / divn
mod = num.length % divn
j = 0
min = 0
while j < divn do
d = j < mod ? div + 1 : div
s = 0
k = 0
while k < d do
s *= 10
s += num[k * divn + j]
k += 1
end
min += s
j += 1
end
end
print max, " ", min, "\n"
小指が強い人