Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Blagoja Mladenov
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int main() {
- char *c;
- int i;
- int j;
- c = (char*) malloc(3 * sizeof(char));
- int **mat;
- mat = (int **)malloc(2000 * sizeof(int *));
- for(i = 0; i < 2000; i++) {
- *(mat + i) = (int*) malloc(2000 * sizeof(int));
- }
- int *sz = (int*)malloc(2000 * sizeof(int));
- for(i = 0; i < 2000; i++) {
- *(sz + i) = 0;
- }
- int r = 0;
- while(1) {
- scanf("%s", c);
- if(strcmp(c, "END") == 0) {
- break;
- }
- if(strcmp(c, "AFR") == 0) {
- int n;
- scanf("%d", &n);
- int *tmp = (int*) malloc(n * sizeof(int));
- for(i = 0; i < n; i++) {
- scanf("%d", (tmp + i));
- }
- int **new = (int**)malloc((r + 1) * sizeof(int*));
- for(i = 0; i < r; i++) {
- *(new + i + 1) = (int*)malloc((*(sz + i)) * sizeof(int));
- for(j = 0; j < *(sz + i); j++) {
- *(*(new + i + 1) + j) = *(*(mat + i) + j);
- }
- }
- *(new) = (int*)malloc(n * sizeof(int));
- for(i = 0; i < n; i++) {
- *(*(new + 0) + i) = *(tmp + i);
- }
- for(i = r; i >= 0; i--) {
- *(sz + i) = *(sz + i - 1);
- }
- *sz = n;
- r++;
- for(i = 0; i < r; i++) {
- for(j = 0; j < *(sz + i); j++) {
- *(*(mat + i) + j) = *(*(new + i) + j);
- }
- }
- free(tmp);
- for(i = 0; i < r; i++) {
- free(*(new + i));
- }
- free(new);
- }
- else if(strcmp(c, "ALR") == 0) {
- int n;
- scanf("%d", &n);
- for(i = 0; i < n; i++) {
- scanf("%d", (*(mat + r) + i));
- }
- *(sz + r) = n;
- r++;
- }
- else if(strcmp(c, "DFR") == 0) {
- if(r > 0) {
- for(i = 0; i < r - 1; i++) {
- *(sz + i) = *(sz + i + 1);
- for(j = 0; j < *(sz + i); j++) {
- *(*(mat + i) + j) = *(*(mat + i + 1) + j);
- }
- }
- r--;
- *(sz + r) = 0;
- }
- }
- else if(strcmp(c, "DLR") == 0) {
- if(r > 0) {
- r--;
- *(sz + r) = 0;
- }
- }
- else if(strcmp(c, "PRT") == 0) {
- printf("%d\n", r);
- for(i = 0; i < r; i++) {
- printf("%d ", *(sz + i));
- for(j = 0; j < *(sz + i); j++) {
- printf("%d ", *(*(mat + i) + j));
- }
- printf("\n");
- }
- }
- }
- free(c);
- free(sz);
- for(i = 0; i < r; i++) {
- free(*(mat + i));
- }
- free(mat);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement