Было: mark[s] = true; Стало: MARK[s div 32] or= pow (2, s mod 32); mark[0] mark[1] ... mark[31] mark[32] ... mark[63] mark[64] ... ... ---------------------------- --------------------- ------------ в одном int: MARK[0] в одном int: MARK[1] MARK[2] ... было: стало: mark[0] 0-й бит MARK[0] / mark[1] 1-й бит MARK[0] / mark[2] 2-й бит MARK[0] / ... / mark[31] 31-й бит MARK[0] / mark[32] 0-й бит MARK[1] \ mark[33] 1-й бит MARK[1] \ ... \ mark[63] 31-й бит MARK[1] \ mark[64] 0-й бит MARK[2] ... было: mark[40] := true стало: MARK[1] := MARK[1] OR pow (2, 8) 1 = 40 div 32 8 = 40 mod 32