Advertisement
max22155

Untitled

Dec 14th, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.13 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdint.h>
  4.  
  5.  
  6.  
  7. int  check(int i,int32_t *mas,int len)
  8. {
  9.     if(2*i+1>len) return 2;
  10.     if(2*i+2>len)
  11.     {
  12.         if(mas[2*i+1]>mas[i])return 1;
  13.         if(mas[2*i+1]<mas[i])return -1;
  14.        if(mas[2*i+1]==mas[i])return 2;
  15.    }
  16.    int right=check(2i+2,mas,len);
  17.    int left =check(2i+1,mas,len);
  18.    if(right==0 || left==0)return 0;
  19.    if(mas[2*i+1]==mas[i] && mas[2*i+2]==mas[i] && (left==2 && right==2))return 2;
  20.    if(mas[2*i+1]>=mas[i] && mas[2*i+2]>=mas[i] && (left==1||left==2) && (right==1|| right==2))
  21.        return 1;
  22.     if(mas[2*i+1]<=mas[i] && mas[2*i+2]<=mas[i] && (left==-1||left==2) && (right==-1|| right==2))
  23.        return -1;
  24.    else return 0;
  25.  
  26.  
  27.  
  28. }
  29.  
  30. int main(void) {
  31.  
  32.    int32_t *mas =(int32_t*)malloc(1049576* sizeof(int));
  33.  
  34.    FILE *input =fopen("input.bin","rb");
  35.    FILE *output = fopen("output.bin","wb");
  36.    int len=0;
  37.    while(!fread(&mas[len], 1 , sizeof(int32_t), input)){
  38.    len++;
  39.    }
  40.    int ans=check(0,mas, len);
  41.    if(ans==2)ans=1;
  42.    fwrite(ans, 1,sizeof(int32_t),output);
  43. fclose(output);
  44. fclose(input);
  45.    return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement