Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <map>
- using namespace std;
- #define pii pair<int, int>
- map<pii, bool> states;
- bool isPossible(pii currentPoint, pii finalPoint) {
- if(currentPoint.first > finalPoint.first || currentPoint.second > finalPoint.second) return false;
- if(currentPoint == finalPoint) return true;
- if(states.count(currentPoint)) return states[currentPoint];
- pii firstOption, secondOption;
- firstOption = secondOption = currentPoint;
- firstOption.first += firstOption.second;
- secondOption.second += secondOption.first;
- bool isReachable = isPossible(firstOption, finalPoint) || isPossible(secondOption, finalPoint);
- return states[currentPoint] = isReachable;
- }
- int main() {
- pii start = pii(3, 2);
- pii end = pii(8, 6);
- cout << isPossible(start, end);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement