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. template<class T1, class T2> void sortA_L(int N, T1 a[], T2 b[], void *mem = wmem){
  13. int i;
  14. pair<T1, T2>*arr;
  15. walloc1d(&arr, N, &mem);
  16. for(i=(0);i<(N);i++){
  17. arr[i].first = a[i];
  18. arr[i].second = b[i];
  19. }
  20. sort(arr, arr+N);
  21. for(i=(0);i<(N);i++){
  22. a[i] = arr[i].first;
  23. b[i] = arr[i].second;
  24. }
  25. }
  26. template<class T1, class T2, class T3> void sortA_L(int N, T1 a[], T2 b[], T3 c[], void *mem = wmem){
  27. int i;
  28. pair<T1, pair<T2, T3> >*arr;
  29. walloc1d(&arr, N, &mem);
  30. for(i=(0);i<(N);i++){
  31. arr[i].first = a[i];
  32. arr[i].second.first = b[i];
  33. arr[i].second.second = c[i];
  34. }
  35. sort(arr, arr+N);
  36. for(i=(0);i<(N);i++){
  37. a[i] = arr[i].first;
  38. b[i] = arr[i].second.first;
  39. c[i] = arr[i].second.second;
  40. }
  41. }
  42. template<class S> inline void arrInsert(const int k, int &sz, S a[], const S aval){
  43. int i;
  44. sz++;
  45. for(i=sz-1;i>k;i--){
  46. a[i] = a[i-1];
  47. }
  48. a[k] = aval;
  49. }
  50. template<class S, class T> inline void arrInsert(const int k, int &sz, S a[], const S aval, T b[], const T bval){
  51. int i;
  52. sz++;
  53. for(i=sz-1;i>k;i--){
  54. a[i] = a[i-1];
  55. }
  56. for(i=sz-1;i>k;i--){
  57. b[i] = b[i-1];
  58. }
  59. a[k] = aval;
  60. b[k] = bval;
  61. }
  62. template<class S, class T, class U> inline void arrInsert(const int k, int &sz, S a[], const S aval, T b[], const T bval, U c[], const U cval){
  63. int i;
  64. sz++;
  65. for(i=sz-1;i>k;i--){
  66. a[i] = a[i-1];
  67. }
  68. for(i=sz-1;i>k;i--){
  69. b[i] = b[i-1];
  70. }
  71. for(i=sz-1;i>k;i--){
  72. c[i] = c[i-1];
  73. }
  74. a[k] = aval;
  75. b[k] = bval;
  76. c[k] = cval;
  77. }
  78. template<class S, class T, class U, class V> inline void arrInsert(const int k, int &sz, S a[], const S aval, T b[], const T bval, U c[], const U cval, V d[], const V dval){
  79. int i;
  80. sz++;
  81. for(i=sz-1;i>k;i--){
  82. a[i] = a[i-1];
  83. }
  84. for(i=sz-1;i>k;i--){
  85. b[i] = b[i-1];
  86. }
  87. for(i=sz-1;i>k;i--){
  88. c[i] = c[i-1];
  89. }
  90. for(i=sz-1;i>k;i--){
  91. d[i] = d[i-1];
  92. }
  93. a[k] = aval;
  94. b[k] = bval;
  95. c[k] = cval;
  96. d[k] = dval;
  97. }
  98. struct unionFind{
  99. int*d;
  100. int N;
  101. int M;
  102. inline void malloc(const int n){
  103. d = (int*)std::malloc(n*sizeof(int));
  104. M = n;
  105. }
  106. inline void malloc(const int n, const int fg){
  107. d = (int*)std::malloc(n*sizeof(int));
  108. M = n;
  109. if(fg){
  110. init(n);
  111. }
  112. }
  113. inline void free(void){
  114. std::free(d);
  115. }
  116. inline void walloc(const int n, void **mem=&wmem){
  117. walloc1d(&d, n, mem);
  118. M = n;
  119. }
  120. inline void walloc(const int n, const int fg, void **mem=&wmem){
  121. walloc1d(&d, n, mem);
  122. M = n;
  123. if(fg){
  124. init(n);
  125. }
  126. }
  127. inline void init(const int n){
  128. int i;
  129. N = n;
  130. for(i=(0);i<(n);i++){
  131. d[i] = -1;
  132. }
  133. }
  134. inline void init(void){
  135. init(M);
  136. }
  137. inline int get(int a){
  138. int t = a;
  139. int k;
  140. while(d[t]>=0){
  141. t=d[t];
  142. }
  143. while(d[a]>=0){
  144. k=d[a];
  145. d[a]=t;
  146. a=k;
  147. }
  148. return a;
  149. }
  150. inline int connect(int a, int b){
  151. if(d[a]>=0){
  152. a=get(a);
  153. }
  154. if(d[b]>=0){
  155. b=get(b);
  156. }
  157. if(a==b){
  158. return 0;
  159. }
  160. if(d[a] < d[b]){
  161. d[a] += d[b];
  162. d[b] = a;
  163. }
  164. else{
  165. d[b] += d[a];
  166. d[a] = b;
  167. }
  168. return 1;
  169. }
  170. inline int operator()(int a){
  171. return get(a);
  172. }
  173. inline int operator()(int a, int b){
  174. return connect(a,b);
  175. }
  176. inline int& operator[](const int a){
  177. return d[a];
  178. }
  179. inline int size(int a){
  180. a = get(a);
  181. return -d[a];
  182. }
  183. inline int sizeList(int res[]){
  184. int i;
  185. int sz=0;
  186. for(i=(0);i<(N);i++){
  187. if(d[i]<0){
  188. res[sz++] = -d[i];
  189. }
  190. }
  191. return sz;
  192. }
  193. }
  194. ;
  195. #define main dummy_main
  196. int main(){
  197. wmem = memarr;
  198. return 0;
  199. }
  200. #undef main
  201. int N;
  202. int X[1000];
  203. int Y[1000];
  204. int m;
  205. int a[1000000];
  206. int b[1000000];
  207. int c[1000000];
  208. class Solution{
  209. public:
  210. int minCostConnectPoints(vector<vector<int>>& points){
  211. int i;
  212. dummy_main();
  213. int res = 0;
  214. unionFind uf;
  215. N = points.size();
  216. for(i=(0);i<(N);i++){
  217. {
  218. auto Q5VJL1cS = (points[i][0]);
  219. auto e98WHCEY = ( points[i][1]);
  220. X[i] = Q5VJL1cS;
  221. Y[i] = e98WHCEY;
  222. }
  223. }
  224. m = 0;
  225. for(i=(0);i<(N);i++){
  226. int j;
  227. for(j=(i+1);j<(N);j++){
  228. arrInsert(m, m, a, i, b, j, c, abs(X[i]-X[j])+abs(Y[i]-Y[j]));
  229. }
  230. }
  231. sortA_L(m, c, a, b);
  232. uf.walloc(N, 1);
  233. for(i=(0);i<(m);i++){
  234. if(uf(a[i],b[i])){
  235. res += c[i];
  236. }
  237. }
  238. return res;
  239. }
  240. }
  241. ;
  242. // cLay varsion 20200913-1
  243.  
  244. // --- original code ---
  245. // #define main dummy_main
  246. // {}
  247. // #undef main
  248. //
  249. // int N, X[1000], Y[1000];
  250. // int m, a[1d6], b[1d6], c[1d6];
  251. //
  252. // class Solution {
  253. // public:
  254. // int minCostConnectPoints(vector<vector<int>>& points) {
  255. // dummy_main();
  256. // int res = 0;
  257. // unionFind uf;
  258. //
  259. // N = points.size();
  260. // rep(i,N) (X[i], Y[i]) = (points[i][0], points[i][1]);
  261. // m = 0;
  262. // rep(i,N) rep(j,i+1,N) arrInsert(m, m, a, i, b, j, c, abs(X[i]-X[j])+abs(Y[i]-Y[j]));
  263. // sortA(m, c, a, b);
  264. //
  265. // uf.walloc(N, 1);
  266. // rep(i,m) if(uf(a[i],b[i])) res += c[i];
  267. // return res;
  268. // }
  269. // };
  270.  
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