Advertisement
Looz_Dreemur

Untitled

Feb 24th, 2020
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.28 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int chkArray(int *arr, int n)
  5. {
  6.     for (int a = 0; a < n; a++)
  7.     {
  8.         if (arr[a] != a + 1)
  9.         {
  10.             return 0;
  11.         }
  12.     }
  13.     return 1;
  14. }
  15.  
  16. void reverseSubarray(int arr[], int low, int high)
  17. {
  18.     int tmp[101];
  19.     int idx = 0;
  20.     for (int a = low; a <= high; a++)
  21.     {
  22.         tmp[idx] = arr[a];
  23.         idx++;
  24.     }
  25.  
  26.     idx = 0;
  27.     for (int a = high; a >= low; a--)
  28.     {
  29.         arr[a] = tmp[idx];
  30.         idx++;
  31.     }
  32. }
  33. int arr[101];
  34. int main(void)
  35. {
  36.     int N, K;
  37.     int a1, a2, b1, b2;
  38.     FILE *f = fopen("swap.in", "r");
  39.     fscanf(f, "%d %d\n%d %d\n%d %d", &N, &K, &a1, &a2, &b1, &b2);
  40.     fclose(f);
  41.     for (int i=0;i<N;i++)
  42.     {
  43.         arr[i] = i+1;
  44.     }
  45.     int iter = 0;
  46.     do
  47.     {
  48.         reverseSubarray(arr, a1-1, a2-1);
  49.         reverseSubarray(arr, b1-1, b2-1);
  50.         iter++;
  51.     } while(!chkArray(arr, N));
  52.     int idx = (K % iter);
  53.     for (int i=0;i<N;i++)
  54.     {
  55.         arr[i] = i+1;
  56.     }
  57.     for (int a=0;a<idx;a++)
  58.     {
  59.         reverseSubarray(arr, a1-1, a2-1);
  60.         reverseSubarray(arr, b1-1, b2-1);
  61.     }
  62.     f = fopen("swap.out", "w");
  63.     for(int a=0;a<N;a++)
  64.     {
  65.         fprintf(f, "%d\n", arr[a]);
  66.     }
  67.     fclose(f);
  68.     return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement