allocatableがつかえないと、余分にメモリを食っちゃうね。
まず、配列変数の定義の時点で
real, dimension(100,100) :: a
real, dimension(100) :: b
と、ある程度大きいメモリ容量を割り付けておいて、すべての変数に0を代入して初期化。
a(:,:) = 0.0
b(:) = 0.0

そのあとnやa,bの要素をreadすればokかな?
ここで、nは単なる繰り返し制御のための変数になるけど、まぁ仕方ないか。