Advertisement
josiftepe

Untitled

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