Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdint.h>
- int check(int i,int32_t *mas,int len)
- {
- if(2*i+1>len) return 2;
- if(2*i+2>len)
- {
- if(mas[2*i+1]>mas[i])return 1;
- if(mas[2*i+1]<mas[i])return -1;
- if(mas[2*i+1]==mas[i])return 2;
- }
- int right=check(2i+2,mas,len);
- int left =check(2i+1,mas,len);
- if(right==0 || left==0)return 0;
- if(mas[2*i+1]==mas[i] && mas[2*i+2]==mas[i] && (left==2 && right==2))return 2;
- if(mas[2*i+1]>=mas[i] && mas[2*i+2]>=mas[i] && (left==1||left==2) && (right==1|| right==2))
- return 1;
- if(mas[2*i+1]<=mas[i] && mas[2*i+2]<=mas[i] && (left==-1||left==2) && (right==-1|| right==2))
- return -1;
- else return 0;
- }
- int main(void) {
- int32_t *mas =(int32_t*)malloc(1049576* sizeof(int));
- FILE *input =fopen("input.bin","rb");
- FILE *output = fopen("output.bin","wb");
- int len=0;
- while(!fread(&mas[len], 1 , sizeof(int32_t), input)){
- len++;
- }
- int ans=check(0,mas, len);
- if(ans==2)ans=1;
- fwrite(ans, 1,sizeof(int32_t),output);
- fclose(output);
- fclose(input);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement