結果
問題 | No.43 野球の試合 |
ユーザー | jj |
提出日時 | 2017-01-29 04:12:38 |
言語 | Fortran (gFortran 13.2.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,162 bytes |
コンパイル時間 | 252 ms |
コンパイル使用メモリ | 36,564 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-06 08:42:37 |
合計ジャッジ時間 | 748 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 1 ms
5,248 KB |
testcase_01 | AC | 1 ms
5,376 KB |
testcase_02 | AC | 1 ms
5,376 KB |
testcase_03 | AC | 1 ms
5,376 KB |
testcase_04 | AC | 1 ms
5,376 KB |
testcase_05 | AC | 1 ms
5,376 KB |
testcase_06 | AC | 1 ms
5,376 KB |
testcase_07 | AC | 2 ms
5,376 KB |
testcase_08 | AC | 1 ms
5,376 KB |
testcase_09 | AC | 1 ms
5,376 KB |
testcase_10 | WA | - |
コンパイルメッセージ
Main.f90:96:30: 96 | write(cformat(5:9),'(i0)'),size(array) | 1 Warning: Legacy Extension: Comma before i/o item list at (1)
ソースコード
program main implicit none integer::N,i,j,tmp,winnum,num,minnum character::c character*6::S(6) integer*8,allocatable::games(:,:) integer*8,parameter::win=2,lose=0,self=9, none=1 type game integer::a,b end type game type(game)::yet(10) yet(:)%a=0 yet(:)%b=0 read *,N allocate(games(1:N,1:N)) read *,S(1:N)(1:N) do i=1,N games(i,i) = self do j=i+1,N c = S(i)(j:j) if(c.eq.'o') then games(i,j) = win games(j,i) = lose else if(c.eq.'x') then games(i,j) = lose games(j,i) = win else if(i.eq.1) then games(i,j) = win games(j,i) = lose else games(i,j) = none games(j,i) = none end if end do end do winnum = COUNT(games(1,:).eq.win) do i=2, N tmp = COUNT(games(i,:).eq.win) if(tmp.gt.winnum) then do j=3, N if(games(i,j).eq.none) then games(i,j) = win games(j,i) = lose end if end do end if end do num = 0 do i=2, N do j=i+1, N if(games(i,j).eq.none) then num = num + 1 yet(num)%a = i yet(num)%b = j end if end do end do if(num.eq.0) then print '(i0)', get_grade() return endif minnum = N do i=0, 2**num-1 do j=0, num-1 if(btest(i, j).eqv..true.) then games(yet(j+1)%a,yet(j+1)%b) = win games(yet(j+1)%b,yet(j+1)%a) = lose else games(yet(j+1)%a,yet(j+1)%b) = lose games(yet(j+1)%b,yet(j+1)%a) = win end if end do minnum = MIN(minnum, get_grade()) end do print '(i0)', minnum contains function get_grade() result(w) integer::i,w integer::grades(0:N+1) grades = 0 do i=2,N grades(COUNT(games(i,:).eq.win)) = 1 end do w = SUM(grades(winnum+1:N+1)) + 1 end function get_grade subroutine aprinter(array) integer*8::array(:) character*32::cformat='(i0, (1x,i0))' write(cformat(5:9),'(i0)'),size(array) write(*,cformat) array end subroutine aprinter end program main