A Discrepancy based Approach to Integer Programming