Advertisement
Emiliatan

e002

Mar 29th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.84 KB | None | 0 0
  1. /* e002            */
  2. /* AC (5ms, 304KB) */
  3. #include <cstdio>
  4. #include <cstring>
  5. #define max(x,y) ((x) > (y) ? (x) : (y))
  6. #define min(x,y) ((x) < (y) ? (x) : (y))
  7.  
  8. using namespace std;
  9.  
  10. const int MAXGAME = 10005;
  11. int N, M, ans, l ,r, sgValue[MAXGAME];
  12.  
  13. int SG(int x)
  14. {
  15.     if(sgValue[x] != -1) return sgValue[x];
  16.  
  17.     bool vis[MAXGAME - 4]{};
  18.  
  19.     for(int i = 1; i <= M; i++)
  20.         if(x >= i) vis[SG(x - i)] = true;
  21.  
  22.     for(int i = 0; i < MAXGAME; i++)
  23.         if(!vis[i]) return sgValue[x] = i;
  24. }
  25.  
  26. int main()
  27. {
  28.     while(~scanf("%d %d", &N, &M))
  29.     {
  30.         memset(sgValue, -1, sizeof(int) * MAXGAME);
  31.         ans = sgValue[0] = 0;
  32.  
  33.         for(int i = 0; i < N && scanf("%d %d", &l, &r); i++)
  34.             ans ^= SG(r - l - 1);
  35.  
  36.         if(ans) puts("OpenChan");
  37.         else puts("Kitty");
  38.     }
  39.     return 0;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement