Advertisement
josiftepe

Untitled

Apr 20th, 2021
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.38 KB | None | 0 0
  1. //Blagoja Mladenov
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. int min(int a, int b) {
  7. if(a < b) {
  8. return a;
  9. }
  10. return b;
  11. }
  12. int main() {
  13. char *c;
  14. int i;
  15. int j;
  16. c = (char*) malloc(3 * sizeof(char));
  17. int **mat;
  18. mat = (int **)malloc(2000 * sizeof(int *));
  19. for(i = 0; i < 2000; i++) {
  20. *(mat + i) = (int*) malloc(2000 * sizeof(int));
  21. }
  22. int *sz = (int*)malloc(2000 * sizeof(int));
  23. for(i = 0; i < 2000; i++) {
  24. *(sz + i) = 0;
  25. }
  26. int r = 0;
  27. while(1) {
  28. scanf("%s", c);
  29. if(strcmp(c, "END") == 0) {
  30. break;
  31. }
  32. if(strcmp(c, "AFR") == 0) {
  33. int n;
  34. scanf("%d", &n);
  35. int *tmp = (int*) malloc(n * sizeof(int));
  36. for(i = 0; i < n; i++) {
  37. scanf("%d", (tmp + i));
  38. }
  39. int **new = (int**)malloc((r + 1) * sizeof(int*));
  40. for(i = 0; i < r; i++) {
  41. *(new + i + 1) = (int*)malloc((*(sz + i)) * sizeof(int));
  42. for(j = 0; j < *(sz + i); j++) {
  43. *(*(new + i + 1) + j) = *(*(mat + i) + j);
  44. }
  45. }
  46. *(new) = (int*)malloc(n * sizeof(int));
  47. for(i = 0; i < n; i++) {
  48. *(*(new + 0) + i) = *(tmp + i);
  49. }
  50. for(i = r; i >= 0; i--) {
  51. *(sz + i) = *(sz + i - 1);
  52. }
  53. *sz = n;
  54. r++;
  55. for(i = 0; i < r; i++) {
  56. for(j = 0; j < *(sz + i); j++) {
  57. *(*(mat + i) + j) = *(*(new + i) + j);
  58. }
  59. }
  60. free(tmp);
  61. for(i = 0; i < r; i++) {
  62. free(*(new + i));
  63. }
  64. free(new);
  65. }
  66. else if(strcmp(c, "ALR") == 0) {
  67. int n;
  68. scanf("%d", &n);
  69. for(i = 0; i < n; i++) {
  70. scanf("%d", (*(mat + r) + i));
  71. }
  72. *(sz + r) = n;
  73. r++;
  74.  
  75. }
  76. else if(strcmp(c, "DFR") == 0) {
  77. if(r > 0) {
  78. for(i = 0; i < r - 1; i++) {
  79. *(sz + i) = *(sz + i + 1);
  80. for(j = 0; j < *(sz + i); j++) {
  81. *(*(mat + i) + j) = *(*(mat + i + 1) + j);
  82. }
  83. }
  84. r--;
  85. *(sz + r) = 0;
  86. }
  87. }
  88. else if(strcmp(c, "DLR") == 0) {
  89. if(r > 0) {
  90. r--;
  91. *(sz + r) = 0;
  92. }
  93. }
  94. else if(strcmp(c, "PRT") == 0) {
  95. printf("%d\n", r);
  96. for(i = 0; i < r; i++) {
  97. printf("%d ", *(sz + i));
  98. for(j = 0; j < *(sz + i); j++) {
  99. printf("%d ", *(*(mat + i) + j));
  100. }
  101. printf("\n");
  102. }
  103. }
  104. else if(strcmp(c, "AFC") == 0) {
  105. int n;
  106. scanf("%d", &n);
  107. int *a = (int*)malloc(n * sizeof(int));
  108. for(i = 0; i < n; i++) {
  109. scanf("%d", (a + i));
  110. }
  111. for(i = 0; i < n; i++) {
  112. if(*(sz + i) > 0) {
  113. for(j = *(sz + i); j > 0; j--) {
  114. *(*(mat + i) + j) = *(*(mat + i) + j - 1);
  115. }
  116. *(*(mat + i)) = *(a + i);
  117. *(sz + i) += 1;
  118. }
  119. else {
  120. *(sz + i) = 1;
  121. *(*(mat + i)) = *(a + i);
  122. r++;
  123. }
  124. }
  125. free(a);
  126. }
  127. else if(strcmp(c, "ALC") == 0) {
  128. int n;
  129. scanf("%d", &n);
  130. int *a = (int*)malloc(n * sizeof(int));
  131. for(i = 0; i < n; i++) {
  132. scanf("%d", (a + i));
  133. }
  134. for(i = 0; i < n; i++) {
  135. if(*(sz + i) > 0) {
  136. *(*(mat + i) + *(sz + i)) = *(a + i);
  137. *(sz + i) += 1;
  138. }
  139. else {
  140. *(sz + i) = 1;
  141. *(*(mat + i)) = *(a + i);
  142. r++;
  143. }
  144. }
  145. free(a);
  146. }
  147. else if(strcmp(c, "DFC") == 0) {
  148. if(r == 0) continue;
  149. for(i = 0; i < r; i++) {
  150. *(sz + i) -= 1;
  151. }
  152. int newr = r;
  153. for(i = 0; i < r; i++) {
  154. for(j = 0; j < *(sz + i); j++) {
  155. *(*(mat + i) + j) = *(*(mat + i) + j + 1);
  156. }
  157. if(*(sz + i) == 0) {
  158. newr--;
  159. }
  160. }
  161. r = newr;
  162. }
  163. else if(strcmp(c, "DLC") == 0) {
  164. if(r == 0) continue;
  165. int newr = r;
  166. for(i = 0; i < r; i++) {
  167. *(sz + i) -= 1;
  168. if(*(sz + i) == 0) {
  169. newr--;
  170. }
  171. }
  172. r = newr;
  173. }
  174. else if(strcmp(c, "IBR") == 0) {
  175. int ind, n;
  176. scanf("%d%d", &ind, &n);
  177. int *a = (int*)malloc(n * sizeof(int));
  178. for(i = 0; i < n; i++) {
  179. scanf("%d", (a + i));
  180. }
  181. if(ind >= 0 && ind < r) {
  182. for(i = r; i > ind; i--) {
  183. *(sz + i) = *(sz + i - 1);
  184. for(j = 0; j < *(sz + i); j++) {
  185. *(*(mat + i) + j) = *(*(mat + i - 1) + j);
  186. }
  187. }
  188. *(sz + ind) = n;
  189. for(j = 0; j < n; j++) {
  190. *(*(mat + ind) + j) = *(a + j);
  191. }
  192. r++;
  193. }
  194. free(a);
  195. }
  196. else if(strcmp(c, "IAR") == 0) {
  197. int ind, n;
  198. scanf("%d%d", &ind, &n);
  199. int *a = (int*)malloc(n * sizeof(int));
  200. for(i = 0; i < n; i++) {
  201. scanf("%d", (a + i));
  202. }
  203. if(ind >= 0 && ind < r) {
  204. for(i = r; i > ind + 1; i--) {
  205. *(sz + i) = *(sz + i - 1);
  206. for(j = 0; j < *(sz + i); j++) {
  207. *(*(mat + i) + j) = *(*(mat + i - 1) + j);
  208. }
  209. }
  210. *(sz + ind + 1) = n;
  211. for(j = 0; j < n; j++) {
  212. *(*(mat + ind + 1) + j) = *(a + j);
  213. }
  214. r++;
  215. }
  216. free(a);
  217. }
  218. else if(strcmp(c, "RMR") == 0) {
  219. int ind;
  220. scanf("%d", &ind);
  221. if(r == 0) continue;
  222.  
  223. if(ind >= 0 && ind < r) {
  224. for(i = ind; i + 1 < r; i++) {
  225. *(sz + i) = *(sz + i + 1);
  226. for(j = 0; j < *(sz + i); j++) {
  227. *(*(mat + i) + j) = *(*(mat + i + 1) + j);
  228. }
  229. }
  230. r--;
  231. }
  232. }
  233. else if(strcmp(c, "RMC") == 0) {
  234. int ind;
  235. scanf("%d", &ind);
  236. }
  237.  
  238.  
  239.  
  240. }
  241.  
  242. free(c);
  243. free(sz);
  244. for(i = 0; i < 2000; i++) {
  245. free(*(mat + i));
  246. }
  247. free(mat);
  248.  
  249. return 0;
  250. }
  251. /*
  252. AFR 3 1 2 3
  253. AFR 4 1 2 3 4
  254. IAR 0 5 1 2 3 4 5
  255. PRT
  256. **/
  257.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement