#include <algorithm>
#include <stdio.h>
#include <windows.h>
struct segment{
       int x1,x2;
       segment(){
                 x1 = 0;
                 x2 = 0;
       }
       segment(int a, int b)
         { 
         if(a>b){
             x1 = b;
             x2 = a;
         }else{
             x1 = a; 
             x2 = b;
         }
         }
};

int operator< (const segment &x, const segment &y)
{
    return x.x1 < y.x1;
}

int main(void){
    int i,n,size=10000;
    segment a[size],b[size];
    srand((unsigned)time(0));
    
for(i=0;i<size;++i){
       int evil;
       evil = rand()%250+1;
  a[i] = segment(evil,evil+50);
       evil = rand()%250+1;
  b[i] = segment(evil,evil+50);
}
int start=0;
int E,S;
S = GetTickCount();
  std::sort(b, b+size);
  std::sort(a, a+size);

int counter=0;

for(i=0;i<size;++i){
    for(n=0;n<size;++n){
        if(b[n].x1<=a[i].x2 && a[i].x1<=b[n].x2)
        {
            ++counter;
            }
    }
}

E = GetTickCount();

	printf("It Took %d ms to detect %d Collisions",E-S,counter);

	scanf("%*c");

  return 0;
}
