Pagini recente » Cod sursa (job #1435569) | Cod sursa (job #1802476) | Cod sursa (job #6965) | Cod sursa (job #225933) | Cod sursa (job #2500016)
//#include <iostream>
#include <fstream>
#include <cmath>
#include <iomanip>
using namespace std;
struct point{
double i,j;
}v[1005];
int n,m;
double e=0.0000001;
double dist(point a,point b){
int i1=a.i,j1=a.j;
int i2=b.i,j2=b.j;
return sqrt(abs(i1-i2)*abs(i1-i2)+abs(j1-j2)*abs(j1-j2));
}
double ariaa(point a,point b,point c){
double d1=dist(a,b);
double d2=dist(a,c);
double d3=dist(b,c);
double p=(d1+d2+d3)/2;
return sqrt(p*(p-d1)*(p-d2)*(p-d3));
}
double aria_totala(){
point gigel;
gigel=v[1];
double sum=0;
for(int i=1;i<n;i++){
sum+=ariaa(v[i],v[i+1],gigel);
}
sum+=ariaa(v[n],v[1],gigel);
return sum;
}
ifstream cin("poligon.in");
ofstream cout("poligon.out");
int main()
{
int cnt=0,a,b;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a>>b;
v[i].i=a;
v[i].j=b;
}
double aria=aria_totala();
//cout<<aria;
/*point gigel,popel;
gigel.i=1;
gigel.j=1;
popel.i=2;
popel.j=2;
cout<<dist(gigel,popel);
*/
for(int i=1;i<=m;i++){
cin>>a>>b;
point gigel;
gigel.i=a;
gigel.j=b;
double sum=0.0;
for(int i=1;i<n;i++){
sum=sum+ariaa(v[i],v[i+1],gigel);
}
sum+=ariaa(v[n],v[1],gigel);
//cout<<aria<<" ";
//cout<<sum<<"\n";
if(abs(aria-sum)<=e)
cnt++;
}
cout<<cnt;
return 0;
}