int threeSumClosest(vector<int>& nums, int target) { int n = nums.size(); long ret = INT_MAX; sort(nums.begin(), nums.end()); for(int i=0;i<=n-3;i = skip_start(nums, i, n-1)){ int a = nums[i]; for(int start=i+1, end=n-1;start < end;){ int b = nums[start], c = nums[end]; long sum = a + b + c; if(abs(sum - target) < abs(ret - target)) ret = sum; if(sum <= target) start = skip_start(nums, start, end); else end = skip_end(nums, start, end); } } return ret; }
int main(int argc, char **argv) { /* Libtap call for the number of tests planned. */ plan_tests(NUM_TESTS); test_config_file_read_none(); skip_start(0 == TORSOCKS_FIXTURE_PATH, 10, "TORSOCKS_FIXTURE_PATH not defined"); test_config_file_read_valid(); test_config_file_read_empty(); test_config_file_read_invalid_values(); skip_end(); return exit_status(); }
int main(int argc, char *argv[]) { unsigned int rc = 0; unsigned int side_effect = 0; rc = plan_tests(4); diag("Returned: %d", rc); rc = ok(1 == 1, "1 equals 1"); /* Should always work */ diag("Returned: %d", rc); do { if(1) { rc = skip(1, "Testing skipping"); continue; } side_effect++; ok(side_effect == 1, "side_effect checked out"); } while(0); diag("Returned: %d", rc); skip_start(1 == 1, 1, "Testing skipping #2"); side_effect++; rc = ok(side_effect == 1, "side_effect checked out"); diag("Returned: %d", rc); skip_end; rc = ok(side_effect == 0, "side_effect is %d", side_effect); diag("Returned: %d", rc); return exit_status(); }