結果
| 問題 |
No.297 カードの数式
|
| コンテスト | |
| ユーザー |
jj
|
| 提出日時 | 2016-08-12 00:40:26 |
| 言語 | Fortran (gFortran 14.2.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,760 bytes |
| コンパイル時間 | 594 ms |
| コンパイル使用メモリ | 33,024 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-11-07 11:54:29 |
| 合計ジャッジ時間 | 1,601 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 16 WA * 7 |
ソースコード
program main
implicit none
integer::N,M,i,max_val,min_val
character::c(15)=""
integer::plus,minus,num(10),digit,series(14)=0
data plus/0/,minus/0/,num/10*0/
read *,N
read *,c(1:N)
do i=1,N
if (c(i).eq.'+') then
plus = plus + 1
else if(c(i).eq.'-') then
minus = minus + 1
else
digit = ICHAR(c(i))-ICHAR('0')
num(digit) = num(digit) + 1
end if
end do
M = N-plus-minus
call sort()
call get_max(max_val)
call get_min(min_val)
print '(i0," ",i0)',max_val,min_val
return
contains
subroutine get_max(max_val)
integer::total=0,max_val
do i=1,minus
total = total - series(i)
end do
do i=minus+1,minus+plus
total = total + series(i)
end do
do i=minus+plus+1,M
total = total + series(i)*10**(i-minus-plus-1)
end do
max_val = total
end subroutine get_max
subroutine get_min(min_val)
integer::total=0,min_val
if(minus.gt.0) then
do i=1,plus+1
total = total + series(i)
end do
do i=plus+2,plus+minus
total = total - series(i)
end do
do i=plus+1+minus, M
total = total - series(i)*10**(i-minus-plus-1)
end do
else
do i=M,M-plus+1,-1
total = total + series(i)
end do
do i=M-plus,1,-1
total = total + series(i)*10**((M-plus)-i)
end do
end if
min_val = total
end subroutine get_min
subroutine sort()
integer::itr
itr = 0
do i=1, M
do
if(num(itr).eq.0) then
itr = itr + 1
else
num(itr) = num(itr) - 1
exit
end if
end do
series(i) = itr
end do
end subroutine sort
end program main
jj