Advertisement
Guest User

Circle of death

a guest
Aug 20th, 2014
281
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.89 KB | None | 0 0
  1. //Bismillahir Rahmanir Rahim
  2. /******Harun Or Rashid******/
  3. /***********Template Starts Here***********/
  4. #include<iostream>
  5. #include<cstdio>
  6. #include<cstring>
  7. #include<cmath>
  8. #include<cctype>
  9. #include<cstdlib>
  10. #include<string>
  11. #include<vector>
  12. #include<set>
  13. #include<stack>
  14. #include<queue>
  15. #include<map>
  16. #include<algorithm>
  17. using namespace std;
  18.  
  19. #define MEM(a,b) memset(a,b,sizeof(a))
  20. #define CLR(a) memset(a,0,sizeof(a))
  21. #define MAX(a,b) ((a)>(b)?(a):(b))
  22. #define MIN(a,b) ((a)>(b)?(b):(a))
  23. #define ABS(a) ((a)>0? (a):(-(a)))
  24. #define SQ(a) ((a)*(a))
  25. #define SZ(a) (int)a.size()
  26. #define FORN(i,n) for(i=1;i<=n;i++)
  27. #define FORAB(i,a,b) for(i=a;i<=b;i++)
  28. #define ALL(V) V.begin(),V.end()
  29. #define pb(a) push_back(a)
  30. #define pr(a) cout<<a<<endl
  31. #define pf printf
  32. #define sf scanf
  33. #define swap(a,b) (a ^= b, b ^= a, a ^= b)
  34. #define PI acos(-1)
  35. #define x first
  36. #define y second
  37. #define eps 1e-6
  38.  
  39. typedef int D;
  40. typedef long long int LLD;
  41. typedef unsigned long long int LLU;
  42. typedef vector<D> VI;
  43. typedef set<D> SI;
  44. typedef vector<D>::iterator Viti;
  45.  
  46. /***********Template Ends Here***********/
  47.  
  48. double det(int x1,int y1,int c1,int x2,int y2,int c2,int x3,int y3,int c3)
  49. {
  50.     double res=x1*(y2*c3-c2*y3)-y1*(c3*x2-c2*x3)+c1*(y3*x2-x3*y2);
  51.     return res;
  52. }
  53.  
  54. int main()
  55. {
  56.     int T,n,i,j,k,l,cnt,prob;
  57.     double area,d1,d2,d3,d4,D;
  58.     vector<pair<int,int> >V;
  59.     cin>>T;
  60.     while(T--)
  61.     {
  62.         cin>>n;
  63.         pair<int,int>point;
  64.         V.clear();
  65.         for(i=0; i<n; i++)
  66.         {
  67.             cin>>point.x>>point.y;
  68.             V.pb(point);
  69.         }
  70.         cnt=prob=0;
  71.         for(i=0; i<n; i++)
  72.         {
  73.             for(j=i+1; j<n; j++)
  74.             {
  75.                 for(k=j+1; k<n; k++)
  76.                 {
  77.                     prob=prob+n-3;
  78.                     area=det(V[i].x,V[i].y,1,V[j].x,V[j].y,1,V[k].x,V[k].y,1);
  79.                     if(area)
  80.                     {
  81.                         for(l=0; l<n; l++)
  82.                         {
  83.                             if(l==i||l==j||l==k) continue;
  84.                             d1=area*(V[l].x*V[l].x+V[l].y*V[l].y);
  85.                             d2=V[l].x*det(V[i].x*V[i].x+V[i].y*V[i].y,V[i].y,1,V[j].x*V[j].x+V[j].y*V[j].y,V[j].y,1,V[k].x*V[k].x+V[k].y*V[k].y,V[k].y,1);
  86.                             d3=V[l].y*det(V[i].x*V[i].x+V[i].y*V[i].y,V[i].x,1,V[j].x*V[j].x+V[j].y*V[j].y,V[j].x,1,V[k].x*V[k].x+V[k].y*V[k].y,V[k].x,1);
  87.                             d4=det(V[i].x*V[i].x+V[i].y*V[i].y,V[i].x,V[i].y,V[j].x*V[j].x+V[j].y*V[j].y,V[j].x,V[j].y,V[k].x*V[k].x+V[k].y*V[k].y,V[k].x,V[k].y);
  88.                             D=d1-d2+d3-d4;
  89.                             if(area<0&&D>=0) cnt++;
  90.                             if(area>0&&D<=0) cnt++;
  91.                         }
  92.                     }
  93.                 }
  94.             }
  95.         }
  96.         printf("%.6lf\n",(double)cnt/prob+eps);
  97.     }
  98.     return 0;
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement