fork download
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<assert.h>
  4.  
  5. void _merge_sort(unsigned int,unsigned int,unsigned int,unsigned int*);
  6.  
  7. int main(int argc,const char*argv[]) {
  8. unsigned int test;
  9. unsigned int s,t,i,_rec_dept;
  10. fscanf(stdin,"%d",&test);
  11. assert(test>0 && test<1001);
  12. while(test--) {
  13. _rec_dept=0;
  14. fscanf(stdin,"%d%d%d",&s,&t,&i);
  15. assert((t>0 && t<1001) && (i>0 && i<1001) && (s>=0 && s<1001));
  16. if((t-s)>0) _merge_sort(s,t,i,&_rec_dept);
  17. fprintf(stdout,"%d\n",_rec_dept);
  18. }
  19. return 0;
  20. }
  21.  
  22. void _merge_sort(unsigned int start,unsigned int end,unsigned int i,unsigned int*_rec_dept) {
  23. unsigned int mid;
  24. if(start<=i && end>=i) {
  25. if(start<end) {
  26. (*_rec_dept)++;
  27. mid = ((end-start)/2) + start;
  28. fprintf(stdout,"%d %d\n", start,end);
  29. if(mid>=i) _merge_sort(start,mid,i,_rec_dept);
  30. else _merge_sort((mid+1),end,i,_rec_dept);
  31. }
  32. else if((start == i) && (end == i)) {
  33. (*_rec_dept)++;
  34. fprintf(stdout,"%d %d\n",start,end);
  35. }
  36. }
  37. else *_rec_dept = -1;
  38. }
Success #stdin #stdout 0s 9424KB
stdin
4
0 4 3
7 15 14
1 16 9
7 14 3
stdout
0 4
3 4
3 3
3
7 15
12 15
14 15
14 14
4
1 16
9 16
9 12
9 10
9 9
5
-1