Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Problem description
- Given a collection of number and sums, determine whether there is a pair of numbers that sums up to the given sum
- Print out "True" or "False" as the result
- */
- #include <iostream>
- #include <vector>
- #include <fstream>
- using namespace std;
- int main() {
- /*Test file name: in.txt
- Test file explain:
- n m
- i1 i2 i3 ... in
- j1 j2 j3 ... jm
- Where:
- n : number of numbers in the array
- m : number of "sum" we need to find
- ik (1 <= k <= n): elements in the array
- jk'(1 <= k'<= m): the sums we need to find
- Sample:
- 7 9
- 2 3 4 5 7 8 20
- 10 19 100 5 9 10 9 22 29
- */
- //Read from file
- ifstream inFile("in.txt");
- int numOfItem = 0, findVal = 0, numToFind = 0;
- inFile >> numOfItem >> numToFind; //Read in important values
- vector<int> value(numOfItem); //Create a container based on given size
- //Read in array values
- for (int indx = 0; indx < numOfItem; indx++) {
- inFile >> value[indx];
- }
- for (int indx = 0; indx < numToFind; indx++) {
- inFile >> findVal;
- bool found = false;
- for (unsigned int lowIndx = 0, highIndx = value.size() - 1; lowIndx < highIndx;) {
- int curVal = value[lowIndx] + value[highIndx];
- if (curVal == findVal) {
- //Found :D
- found = true;
- break;
- }
- if (curVal > findVal) {
- //Too big
- highIndx--;
- }
- else {
- //Too small
- lowIndx++;
- }
- }
- //Output appropriately
- cout << (found == true ? "True" : "False") << endl;
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment