Advertisement
CODEMALAYALAM

Untitled

Jul 25th, 2020
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.60 KB | None | 0 0
  1. #include <assert.h>
  2. #include <limits.h>
  3. #include <math.h>
  4. #include <stdbool.h>
  5. #include <stddef.h>
  6. #include <stdint.h>
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <string.h>
  10.  
  11. char* readline();
  12.  
  13. // Complete the countingValleys function below.
  14. int countingValleys(int n, char* s) {
  15.    
  16.     int i, level = 0, valley = 0;
  17.    
  18.     for(i = 0;i<n; ++i)
  19.     {
  20.         if(*(s+i) == 'D')
  21.             --level;
  22.         else
  23.             ++level;
  24.         if(*(s+i)== 'U' && level == 0)
  25.             ++valley;
  26.     }
  27.     return valley;
  28.    
  29. }
  30.  
  31. int main()
  32. {
  33.     FILE* fptr = fopen(getenv("OUTPUT_PATH"), "w");
  34.  
  35.     char* n_endptr;
  36.     char* n_str = readline();
  37.     int n = strtol(n_str, &n_endptr, 10);
  38.  
  39.     if (n_endptr == n_str || *n_endptr != '\0') { exit(EXIT_FAILURE); }
  40.  
  41.     char* s = readline();
  42.  
  43.     int result = countingValleys(n, s);
  44.  
  45.     fprintf(fptr, "%d\n", result);
  46.  
  47.     fclose(fptr);
  48.  
  49.     return 0;
  50. }
  51.  
  52. char* readline() {
  53.     size_t alloc_length = 1024;
  54.     size_t data_length = 0;
  55.     char* data = malloc(alloc_length);
  56.  
  57.     while (true) {
  58.         char* cursor = data + data_length;
  59.         char* line = fgets(cursor, alloc_length - data_length, stdin);
  60.  
  61.         if (!line) { break; }
  62.  
  63.         data_length += strlen(cursor);
  64.  
  65.         if (data_length < alloc_length - 1 || data[data_length - 1] == '\n') { break; }
  66.  
  67.         size_t new_length = alloc_length << 1;
  68.         data = realloc(data, new_length);
  69.  
  70.         if (!data) { break; }
  71.  
  72.         alloc_length = new_length;
  73.     }
  74.  
  75.     if (data[data_length - 1] == '\n') {
  76.         data[data_length - 1] = '\0';
  77.     }
  78.  
  79.     data = realloc(data, data_length);
  80.  
  81.     return data;
  82. }
  83.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement