C Program to REAL Union of Intervals

How to write a C Program to REAL Union of Intervals in C Programming Language ?

This C Program to REAL Union of Intervals.

Solution:

  1. #include<stdio.h>
  2. float a[65536],b[65536];
  3. void quicksort(float min,float max)
  4. {
  5.     int pivot,i,j;
  6.     float k;
  7.     if(min<max)
  8.     {
  9.         pivot=max;
  10.         i=min;
  11.         j=max;
  12.         while(i<j)
  13.         {
  14.             while(a[i]<=a[pivot] && i<max)
  15.                 i++;
  16.             while(a[j]>a[pivot])
  17.                 j--;
  18.             if(i<j)
  19.             {
  20.                 k=a[i];
  21.                 a[i]=a[j];
  22.                 a[j]=k;
  23.                 k=b[i];
  24.                 b[i]=b[j];
  25.                 b[j]=k;
  26.             }
  27.         }
  28.         k=a[pivot];
  29.         a[pivot]=a[j];
  30.         a[j]=k;
  31.         quicksort(min,j-1);
  32.         quicksort(j+1,max);
  33.     }
  34. }
  35.  
  36. int main()
  37. {
  38.     int n,i,j;
  39.     float end,sum=0,t;
  40.     scanf("%d",&n);
  41.     for(i=0;i<n;i++)
  42.     {
  43.         scanf("%f",&a[i]);
  44.         scanf("%f",&b[i]);
  45.     }
  46.     quicksort(0,n-1);
  47.     end=b[0];
  48.     sum=end-a[0];
  49.     for(i=1;i<n;i++)
  50.     {
  51.         if(a[i]<=end)
  52.         {
  53.             if(b[i]>=end)
  54.             {
  55.                 t=b[i]-end;
  56.                 sum=sum+t;
  57.                 end=b[i];
  58.             }
  59.         }
  60.         else
  61.         {
  62.             t=b[i]-end;
  63.             sum=sum+t;
  64.             end=b[i];
  65.         }
  66.     }
  67.     printf("%f",sum);
  68.     return 0;
  69. }


Learn More :