frp

Теодор Рузвельт

frp
May 6th, 2011
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.11 KB | None | 0 0
  1.  
  2. #include <fstream>
  3. #include <cmath>
  4. #include <vector>
  5. using namespace std;
  6. double S(double x1,double y1,double x2,double y2,double x3,double y3)
  7. {
  8.     return abs((x1*(y2-y3)-x2*(y1-y3)+x3*(y1-y2))/2);
  9. }
  10. bool check(double x1,double y1,double x2,double y2,double x3,double y3,double x,double y)
  11. {
  12.     return abs(S(x1,y1,x2,y2,x,y)+S(x1,y1,x3,y3,x,y)
  13.                +S(x2,y2,x3,y3,x,y)-S(x1,y1,x2,y2,x3,y3))<=0.00001;
  14. }
  15. double d(double x1,double y1,double x2,double y2)
  16. {
  17.     return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
  18. }
  19. int main()
  20. {
  21.     ifstream in("theodore.in");
  22.     ofstream out("theodore.out");
  23.     ofstream log("theodore.log");
  24.     int n,m,k;in>>n>>m>>k;
  25.     vector<double> x(n),y(n);
  26.     for(int i=0;i<n;i++)in>>x[i]>>y[i];
  27.     double als=0;
  28.     for(int i=1;i<n-1;i++)als+=S(x[0],y[0],x[i],y[i],x[i+1],y[i+1]);
  29.     int cnt=0;
  30.     for(int i=0;i<m;i++)
  31.     {
  32.         double xp,yp;
  33.         in>>xp>>yp;
  34.         double as=0;
  35.         for(int i=0;i<n;i++)
  36.             as+=S(xp,yp,x[i],y[i],x[(i+1)%n],y[(i+1)%n]);
  37.         if(abs(as-als)<1e-4)
  38.         {
  39.             log<<"YES\n";
  40.             cnt++;
  41.         }
  42.         else log<<"NO\n";
  43.     }
  44.     out<<(cnt>=k?"YES":"NO")<<'\n';
  45.     in.close();
  46.     out.close();
  47.     return 0;
  48. }
Advertisement
Add Comment
Please, Sign In to add comment