program main implicit none integer :: i,j,k,n,nc real*8, allocatable :: a(:), c(:), b(:,:) real*8 :: sumd,sumb !1) open(10,file='input') read(10,*) n allocate(a(n)) do i=1,n read(10,*) a(i) enddo close(10) !2) allocate(b(n,n)) do i=1,n b(i,i)=a(i) enddo do i=1,n do j=i+1,n b(i,j)=b(i,i)/dble(i+j) b(j,i)=b(i,j) enddo enddo !3) and 4) sumb=sum(b) sumd=0.d0 do i=1,n sumd=sumd+b(i,i) enddo if (sumb.gt.sumd) then nc=0 do i=1,n do j=1,n if (b(i,j).gt.0.d0) then nc=nc+1 endif enddo enddo if (nc.gt.0) then allocate(c(nc)) k=0 do i=1,n do j=1,n if (b(i,j).gt.0.d0) then k=k+1 c(k)=b(i,j) endif enddo enddo open(11,file='c.dat') do i=1,nc write(11,100) i,c(i) enddo close(11) endif endif open(11,file='b.dat') do i=1,n do j=1,n write(11,101) i,j,b(i,j) enddo enddo close(11) 100 format(I5,F10.4) 101 format(I5,I5,F10.4) if (allocated(c)) deallocate(c) deallocate(a) deallocate(b) stop end program