time algorithm