Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <iostream>
- using namespace std;
- ifstream fin("cookies.txt");
- bool counted[50][10][10] = {0};
- bool win[50][10][10];
- // returns true if player 1 wins under the given m, n conditions, false otherwise
- // p = number of cookies previous player took, 0 if there is no previous player
- bool rec(int m, int n, int p) {
- if(counted[m][n][p]) return win[m][n][p];
- if(m == 1 && p == 1) return false;
- bool flag = false;
- for(int i = min(n, m); i >= 1; i--) {
- if(i == p) continue;
- if(!rec(m-i, n, i)) {
- flag = true;
- break;
- }
- }
- counted[m][n][p] = true;
- win[m][n][p] = flag;
- return flag;
- }
- int main() {
- int counter = 0;
- int N;
- int m, n;
- fin >> N;
- for(int i = 1; i <= N; i++) {
- fin >> m >> n;
- if(rec(m, n, 0)) counter++;
- }
- cout << counter << endl;
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement