print #include
#include
using namespace std;
struct point
{double x;double y;
point(double x=0, double y=0):x(x),y(y){}
}p[100005],a,ch[100005];
typedef point vector;
vector operator-(point a, point b){return vector(a.x-b.x,a.y-b.y);}
double cross(vector a, vector b){return a.x*b.y-a.y*b.x;}
bool operator<(const point& a,const point& b){return a.x
int convexhull(point *p,int n,point *ch)
{
sort(p,p+n);
int m=0;
for(int i=0;i
while(m>1&&cross(ch[m-1]-ch[m-2],p[i]-ch[m-2])<=0)
m--;
ch[m++]=p[i];
}
int k=m;
for(int i=n-2;i>=0;i--)
{
while(m>k&&cross(ch[m-1]-ch[m-2],p[i]-ch[m-2])<=0)
m--;
ch[m++]=p[i];
}
if(n>1) m--;
return m;
}
int main()
{
int n,t;
while(cin>>n)
{
for(int i=0;i
int m=convexhull(p,n,ch);
cin>>t;
while(t--)
{
cin>>a.x>>a.y;
for(int i=0;i
goto out;
cout<<"inside"<
out: cout<<"outside"<
}
return 0;
}
#include
#include
using namespace std;
struct point
{double x;double y;
point(double x=0, double y=0):x(x),y(y){}
}p[100005],a,ch[100005];
typedef point vector;
vector operator-(point a, point b){return vector(a.x-b.x,a.y-b.y);} int convexhull(point *p,int n,point *ch) int main()
double cross(vector a, vector b){return a.x*b.y-a.y*b.x;}
bool operator<(const point& a,const point& b){return a.x
{
sort(p,p+n);
int m=0;
for(int i=0;i
while(m>1&&cross(ch[m-1]-ch[m-2],p[i]-ch[m-2])<=0)
m--;
ch[m++]=p[i];
}
int k=m;
for(int i=n-2;i>=0;i--)
{
while(m>k&&cross(ch[m-1]-ch[m-2],p[i]-ch[m-2])<=0)
m--;
ch[m++]=p[i];
}
if(n>1) m--;
return m;
}
{
int n,t;
while(cin>>n)
{
for(int i=0;i
int m=convexhull(p,n,ch);
cin>>t;
while(t--)
{
cin>>a.x>>a.y;
for(int i=0;i
goto out;
cout<<"inside"<
out: cout<<"outside"<
}
return 0;
}