Advertisement
greannmhar

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

Nov 22nd, 2023
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.52 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 c = 0;
  20.     int ans = 0;
  21.     for (int i = 0; i < n; i++)
  22.     {
  23.         if (arr[i] == 1)
  24.         {
  25.             c++;
  26.         }
  27.         else
  28.         {
  29.             c = c - 1;
  30.         }
  31.         if (c == 0)
  32.         {
  33.             ans++;
  34.         }
  35.     }
  36.     return ans;
  37. }
  38.  
  39.  
  40. int main(void)
  41. {
  42.     FILE* file;
  43.     int* arr;
  44.     int N;
  45.     int ans = 0;
  46.    
  47.     if ((file = fopen("in.txt", "rt")) == NULL) {
  48.         printf("Can't open input file!\n");
  49.         return -1;
  50.     }
  51.    
  52.     if (fscanf(file, "%d", &N) != 1) {
  53.         printf("Can't read N!\n");
  54.         fclose(file);
  55.         return -1;
  56.     }
  57.    
  58.     if (N < 1) {
  59.         printf("Invalid N!\n");
  60.         fclose(file);
  61.         return -1;
  62.     }
  63.    
  64.     if ((arr = (int*) malloc(N * sizeof(int))) == NULL)
  65.     {
  66.         printf("Can't allocate memory!\n");
  67.         fclose(file);
  68.         return -1;
  69.     }
  70.    
  71.    
  72.     if (readarr(file, arr, N) < 0) {
  73.         printf("Can't read array 1!\n");
  74.         fclose(file);
  75.         free(arr);
  76.     }
  77.  
  78.     printf("%d\n", sol(arr, N));
  79.     free(arr);
  80.     fclose(file);
  81.    
  82.     return 0;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement