fork download
  1. #include <stdint.h>
  2. #define N 1<<27
  3.  
  4. #define min(x, y) (x<y?x:y)
  5. #define max(x, y) (x<y?y:x)
  6. #define SWAP(x,y) { const uint64_t a = min(temp[x], temp[y]); const uint64_t b = max(temp[x], temp[y]); temp[x] = a; temp[y] = b;}
  7.  
  8. uint64_t s[2] = {0xb78895b278bfd25bULL, 0x5b1384c2629587a9ULL};
  9.  
  10. inline uint64_t xrand(void) {
  11. uint64_t s1 = s[0];
  12. const uint64_t s0 = s[1];
  13. s[0] = s0;
  14. s1 ^= s1 << 23;
  15. return (s[1] = (s1 ^ s0 ^ (s1 >> 17) ^ (s0 >> 26))) + s0;
  16. }
  17.  
  18. int main(void){
  19. uint32_t i;
  20. uint64_t temp[9] = {0}, t, r;
  21.  
  22. for(i = 0; i < N; i ++){
  23. temp[0] = xrand();
  24. temp[1] = xrand();
  25. temp[2] = xrand();
  26. temp[3] = xrand();
  27. temp[4] = xrand();
  28. temp[5] = xrand();
  29. temp[6] = xrand();
  30. temp[7] = xrand();
  31. temp[8] = xrand();
  32.  
  33. SWAP(0, 1);
  34. SWAP(3, 4);
  35. SWAP(6, 7);
  36. SWAP(1, 2);
  37. SWAP(4, 5);
  38. SWAP(7, 8);
  39. SWAP(0, 1);
  40. SWAP(3, 4);
  41. SWAP(6, 7);
  42. SWAP(0, 3);
  43. SWAP(3, 6);
  44. SWAP(0, 3);
  45. SWAP(1, 4);
  46. SWAP(4, 7);
  47. SWAP(1, 4);
  48. SWAP(2, 5);
  49. SWAP(5, 8);
  50. SWAP(2, 5);
  51. SWAP(1, 3);
  52. SWAP(5, 7);
  53. SWAP(2, 6);
  54. SWAP(4, 6);
  55. SWAP(2, 4);
  56. SWAP(2, 3);
  57. SWAP(5, 6);
  58.  
  59. r ^= temp[6];
  60. }
  61.  
  62. return r;
  63. }
  64.  
Time limit exceeded #stdin #stdout 5s 2008KB
stdin
Standard input is empty
stdout
Standard output is empty