fork(1) download
  1. #include<bits/stdc++.h>
  2.  
  3. #define read(n) scanf("%d",&n)
  4. #define readl(n) scanf("%lld",&n)
  5. #define print(n) printf("%d",n)
  6. #define printl(n) printf("%lld",n)
  7. #define println() printf("\n")
  8. #define For(i,a,b) for(i=a;i<=b;i++)
  9. #define M 10000007
  10. typedef long long int ll;
  11. using namespace std;
  12.  
  13. struct node {
  14. int control_digit, bank_code, a, b, c, d;
  15. struct node* left;
  16. struct node* right;
  17. int rep;
  18. int lcd,lbc;
  19. };
  20.  
  21. typedef struct node node;
  22.  
  23. void add(node* t,node* ptr) {
  24. if(t==NULL) {
  25. t = ptr;
  26. }
  27. else {
  28. if(t->control_digit>ptr->control_digit) {
  29. if(t->left==NULL) {
  30. t->left = ptr;
  31. }
  32. else
  33. add(t->left, ptr);
  34. }
  35. else if(t->control_digit<ptr->control_digit) {
  36. if(t->right==NULL) {
  37. t->right = ptr;
  38. }
  39. else
  40. add(t->right, ptr);
  41. }
  42. else {
  43. if(t->bank_code>ptr->bank_code) {
  44. if(t->left==NULL) {
  45. t->left = ptr;
  46. }
  47. else
  48. add(t->left, ptr);
  49. }
  50. else if(t->bank_code<ptr->bank_code) {
  51. if(t->right==NULL) {
  52. t->right = ptr;
  53. }
  54. else
  55. add(t->right, ptr);
  56. }
  57. else {
  58. if(t->a>ptr->a) {
  59. if(t->left==NULL) {
  60. t->left = ptr;
  61. }
  62. else
  63. add(t->left, ptr);
  64. }
  65. else if(t->a<ptr->a) {
  66. if(t->right==NULL) {
  67. t->right = ptr;
  68. }
  69. else
  70. add(t->right, ptr);
  71. }
  72. else {
  73. if(t->b>ptr->b) {
  74. if(t->left==NULL) {
  75. t->left = ptr;
  76. }
  77. else
  78. add(t->left, ptr);
  79. }
  80. else if(t->b<ptr->b) {
  81. if(t->left==NULL) {
  82. t->left = ptr;
  83. }
  84. else
  85. add(t->right, ptr);
  86. }
  87. else {
  88. if(t->c>ptr->c) {
  89. if(t->left==NULL) {
  90. t->left = ptr;
  91. }
  92. else
  93. add(t->left, ptr);
  94. }
  95. else if(t->c<ptr->c) {
  96. if(t->right==NULL) {
  97. t->right = ptr;
  98. }
  99. else
  100. add(t->right, ptr);
  101. }
  102. else {
  103. if(t->d>ptr->d) {
  104. if(t->left==NULL) {
  105. t->left = ptr;
  106. }
  107. else
  108. add(t->left, ptr);
  109. }
  110. else if(t->d<ptr->d) {
  111. if(t->right==NULL) {
  112. t->right = ptr;
  113. }
  114. else
  115. add(t->right, ptr);
  116. }
  117. else {
  118. t->rep = t->rep + 1;
  119. }
  120.  
  121. }
  122.  
  123. }
  124. }
  125. }
  126. }
  127. }
  128. }
  129.  
  130. void disp(node* t) {
  131. if(t!=NULL) {
  132. disp(t->left);
  133. if((int)((floor(1+log10(t->control_digit))))<t->lcd) {
  134. int x = (t->control_digit==0)?3:t->lcd - (int)((floor(1+log10(t->control_digit))));
  135. for(int i = 1;i<=x;i++) {
  136. printf("0");
  137. }
  138. printf("%d",t->control_digit);
  139. }
  140. else {
  141. printf("%d",t->control_digit);
  142. }
  143. printf(" ");
  144. if((int)((floor(1+log10(t->bank_code))))<t->lbc) {
  145. int x = (t->bank_code==0)?3: t->lbc - (int)((floor(1+log10(t->bank_code))));
  146. for(int i = 1;i<=x;i++) {
  147. printf("0");
  148. }
  149. printf("%d",t->bank_code);
  150. }
  151. else {
  152. printf("%d",t->bank_code);
  153. }
  154. printf(" ");
  155.  
  156. if((int)((floor(1+log10(t->a))))<4) {
  157. int x = (t->a==0)?3: 4 - (int)((floor(1+log10(t->a))));
  158. for(int i = 1;i<=x;i++) {
  159. printf("0");
  160. }
  161. printf("%d",t->a);
  162. }
  163. else {
  164. printf("%d",t->a);
  165. }
  166. printf(" ");
  167. if((int)((floor(1+log10(t->b))))<4) {
  168. int x = (t->b==0)?3: 4 - (int)((floor(1+log10(t->b))));
  169. for(int i = 1;i<=x;i++) {
  170. printf("0");
  171. }
  172. printf("%d",t->b);
  173. }
  174. else {
  175. printf("%d",t->b);
  176. }
  177. printf(" ");
  178. if((int)((floor(1+log10(t->c))))<4) {
  179. int x = (t->c==0)?3: 4 - (int)((floor(1+log10(t->c))));
  180. for(int i = 1;i<=x;i++) {
  181. printf("0");
  182. }
  183. printf("%d",t->c);
  184. }
  185. else {
  186. printf("%d",t->c);
  187. }
  188. printf(" ");
  189. if((int)((floor(1+log10(t->d))))<4) {
  190. int x = (t->d==0)?3: 4 - (int)((floor(1+log10(t->d))));
  191. for(int i = 1;i<=x;i++) {
  192. printf("0");
  193. }
  194. printf("%d",t->d);
  195. }
  196. else {
  197. printf("%d",t->d);
  198. }
  199. printf(" %d",t->rep);
  200. println();
  201. disp(t->right);
  202. }
  203. }
  204.  
  205. int main(void) {
  206. int tt;
  207. read(tt);
  208. while(tt--) {
  209. node* t = NULL;
  210. int n, a;
  211. read(n);
  212. char s[99999];
  213. if(n>0) {
  214.  
  215. t = (node*)malloc(sizeof(node));
  216. scanf("%s",s);
  217. t->lcd = strlen(s);
  218. t->control_digit = atoi(s);
  219. scanf("%s",s);
  220. t->lbc = strlen(s);
  221. t->bank_code = atoi(s);
  222. read(a);
  223. t->a = a;
  224. read(a);
  225. t->b = a;
  226. read(a);
  227. t->c = a;
  228. read(a);
  229. t->d = a;
  230. t->rep = 1;
  231. t->left = NULL;
  232. t->right = NULL;
  233. }
  234. for(int i=1;i<=n-1;i++) {
  235. node* ptr = (node*)malloc(sizeof(node));
  236. scanf("%s",s);
  237. ptr->lcd = strlen(s);
  238. ptr->control_digit = atoi(s);
  239. scanf("%s",s);
  240. ptr->lbc = strlen(s);
  241. ptr->bank_code = atoi(s);
  242. read(a);
  243. ptr->a = a;
  244. read(a);
  245. ptr->b = a;
  246. read(a);
  247. ptr->c = a;
  248. read(a);
  249. ptr->d = a;
  250. ptr->rep = 1;
  251. ptr->left = NULL;
  252. ptr->right = NULL;
  253. add(t,ptr);
  254. }
  255. disp(t);
  256. println();
  257. }
  258. return 0;
  259. }
  260.  
Success #stdin #stdout 0s 3464KB
stdin
1
10
0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000
stdout
0000 0000 0000 0000 0000 0000 10