Advertisement
greannmhar

жадные алгоритмы 27

Nov 22nd, 2023
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.79 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int readarr(FILE* fin, int* data, int cnt); //считываем данные из файла в массив
  5. int readarr(FILE* fin, int* data, int cnt)
  6. {
  7.     for (int k = 0; k < cnt; k++)
  8.     {
  9.         if (fscanf(fin, "%d", data + k) != 1){
  10.             return -1;
  11.         }
  12.     }
  13.     return 0;
  14. }
  15.  
  16. int sol(int* arr, int n);
  17. int sol(int* arr, int n)
  18. {
  19.     int prev = 0;
  20.     int c = 1;
  21.     int f = 0;
  22.     prev = arr[0];
  23.     for (int i = 1; i < n; i++)
  24.     {
  25.         if (arr[i] - prev == 1)
  26.         {
  27.             c++;
  28.         }
  29.         else if (c > 2)
  30.         {
  31.             c = 1;
  32.         }
  33.         else
  34.         {
  35.             f = 1;
  36.             break;
  37.         }
  38.         prev = arr[i];
  39.         if ( i == (n - 1) & c != 0 & c < 3)
  40.         {
  41.             f = 1;
  42.         }
  43.     }
  44.     return f;
  45. }
  46.  
  47.  
  48. int main(void)
  49. {
  50.     FILE* file;
  51.     int* arr;
  52.     int N;
  53.     int ans = 0;
  54.    
  55.     if ((file = fopen("in.txt", "rt")) == NULL) {
  56.         printf("Can't open input file!\n");
  57.         return -1;
  58.     }
  59.    
  60.     if (fscanf(file, "%d", &N) != 1) {
  61.         printf("Can't read N!\n");
  62.         fclose(file);
  63.         return -1;
  64.     }
  65.    
  66.     if (N < 1) {
  67.         printf("Invalid N!\n");
  68.         fclose(file);
  69.         return -1;
  70.     }
  71.    
  72.     if ((arr = (int*) malloc(N * sizeof(int))) == NULL)
  73.     {
  74.         printf("Can't allocate memory!\n");
  75.         fclose(file);
  76.         return -1;
  77.     }
  78.    
  79.    
  80.     if (readarr(file, arr, N) < 0) {
  81.         printf("Can't read array 1!\n");
  82.         fclose(file);
  83.         free(arr);
  84.     }
  85.  
  86.     if (sol(arr, N) == 0)
  87.     {
  88.         printf("can be divided\n");
  89.     }
  90.     else
  91.     {
  92.         printf("can NOT be divided\n");
  93.     }
  94.     free(arr);
  95.     fclose(file);
  96.    
  97.     return 0;
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement