Skip to content

Instantly share code, notes, and snippets.

@johnchen902
Created April 17, 2016 10:32
Show Gist options
  • Save johnchen902/9fdf5b8ac4a0ff1ad7772ed72e8d2cfd to your computer and use it in GitHub Desktop.
Save johnchen902/9fdf5b8ac4a0ff1ad7772ed72e8d2cfd to your computer and use it in GitHub Desktop.
#include <stdio.h>
enum { unknown, is_false, is_true } dp[1 << 25];
bool solve(int x, int mod, int mask) {
if(dp[mask] != unknown)
return dp[mask] == is_true;
if((x ^ mask) % mod == 0) {
dp[mask] = is_false;
return false;
}
for(int m = mask; m; m ^= m & -m)
if(!solve(x, mod, mask ^ (m & -m))) {
dp[mask] = is_true;
return true;
}
dp[mask] = is_false;
return false;
}
int main() {
int n, x, k;
scanf("%d %d %d", &n, &x, &k);
printf("%s\n", solve(x ^ ((1 << n) - 1), (1 << k) - 1, (1 << n) - 1) ? "Henry" : "Rider");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment