fork download
  1. #pragma GCC optimize ("Ofast")
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. void*wmem;
  5. char memarr[96000000];
  6. template<class T> inline void walloc1d(T **arr, int x, void **mem = &wmem){
  7. static int skip[16] = {0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
  8. (*mem) = (void*)( ((char*)(*mem)) + skip[((unsigned long long)(*mem)) & 15] );
  9. (*arr)=(T*)(*mem);
  10. (*mem)=((*arr)+x);
  11. }
  12. struct unionFind{
  13. int*d;
  14. int N;
  15. int M;
  16. inline void malloc(const int n){
  17. d = (int*)std::malloc(n*sizeof(int));
  18. M = n;
  19. }
  20. inline void malloc(const int n, const int fg){
  21. d = (int*)std::malloc(n*sizeof(int));
  22. M = n;
  23. if(fg){
  24. init(n);
  25. }
  26. }
  27. inline void free(void){
  28. std::free(d);
  29. }
  30. inline void walloc(const int n, void **mem=&wmem){
  31. walloc1d(&d, n, mem);
  32. M = n;
  33. }
  34. inline void walloc(const int n, const int fg, void **mem=&wmem){
  35. walloc1d(&d, n, mem);
  36. M = n;
  37. if(fg){
  38. init(n);
  39. }
  40. }
  41. inline void init(const int n){
  42. int i;
  43. N = n;
  44. for(i=(0);i<(n);i++){
  45. d[i] = -1;
  46. }
  47. }
  48. inline void init(void){
  49. init(M);
  50. }
  51. inline int get(int a){
  52. int t = a;
  53. int k;
  54. while(d[t]>=0){
  55. t=d[t];
  56. }
  57. while(d[a]>=0){
  58. k=d[a];
  59. d[a]=t;
  60. a=k;
  61. }
  62. return a;
  63. }
  64. inline int connect(int a, int b){
  65. if(d[a]>=0){
  66. a=get(a);
  67. }
  68. if(d[b]>=0){
  69. b=get(b);
  70. }
  71. if(a==b){
  72. return 0;
  73. }
  74. if(d[a] < d[b]){
  75. d[a] += d[b];
  76. d[b] = a;
  77. }
  78. else{
  79. d[b] += d[a];
  80. d[a] = b;
  81. }
  82. return 1;
  83. }
  84. inline int operator()(int a){
  85. return get(a);
  86. }
  87. inline int operator()(int a, int b){
  88. return connect(a,b);
  89. }
  90. inline int& operator[](const int a){
  91. return d[a];
  92. }
  93. inline int size(int a){
  94. a = get(a);
  95. return -d[a];
  96. }
  97. inline int sizeList(int res[]){
  98. int i;
  99. int sz=0;
  100. for(i=(0);i<(N);i++){
  101. if(d[i]<0){
  102. res[sz++] = -d[i];
  103. }
  104. }
  105. return sz;
  106. }
  107. }
  108. ;
  109. #define main dummy_main
  110. int main(){
  111. wmem = memarr;
  112. return 0;
  113. }
  114. #undef main
  115. class Solution{
  116. public:
  117. vector<bool> areConnected(int n, int t, vector<vector<int>>& queries){
  118. int i;
  119. dummy_main();
  120. unionFind uf;
  121. vector<bool> res;
  122. uf.walloc(n+1,1);
  123. for(i=(t+1);i<(n+1);i++){
  124. int j;
  125. for(j=(i);j<(n+1);j+=(i)){
  126. uf(i,j);
  127. }
  128. }
  129. for(vector<int> q : queries){
  130. res.push_back(uf(q[0]) == uf(q[1]));
  131. }
  132. return res;
  133. }
  134. }
  135. ;
  136. // cLay varsion 20201018-2
  137.  
  138. // --- original code ---
  139. // #define main dummy_main
  140. // {}
  141. // #undef main
  142. //
  143. // class Solution {
  144. // public:
  145. // vector<bool> areConnected(int n, int t, vector<vector<int>>& queries) {
  146. // dummy_main();
  147. // unionFind uf;
  148. // vector<bool> res;
  149. // uf.walloc(n+1,1);
  150. // rep(i,t+1,n+1) rep(j,i,n+1,i) uf(i,j);
  151. // for(VI q : queries) res.push_back(uf(q[0]) == uf(q[1]));
  152. // return res;
  153. // }
  154. // };
  155.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/Scrt1.o: in function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
stdout
Standard output is empty