Cod sursa(job #993239)

Utilizator raulstoinStoin Raul raulstoin Data 3 septembrie 2013 15:28:14
Problema Poligon Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream>

#define X first
#define Y second
#define US unsigned short

using namespace std;

ifstream fin("poligon.in");
ofstream fout("poligon.out");

int n,m;
pair<US,US> v[805],p;
long long aria,arie,sol;

inline long long det(int i)
{
	return 	1LL* p.X*v[i].Y + 1LL* v[i].X*v[i+1].Y + 1LL* v[i+1].X*p.Y -
			(1LL* p.Y*v[i].X + 1LL* v[i].Y*v[i+1].X + 1LL* v[i+1].Y*p.X);
}

int main()
{
	fin>>n>>m;
	for(int i=1;i<=n;i++)
		fin>>v[i].X>>v[i].Y;
	v[++n]=v[1];
	for(int i=1;i<n;i++)
		aria+=1LL*v[i].X*v[i+1].Y-1LL*v[i].Y*v[i+1].X;
	if(aria<0)
		aria=-aria;
	while(m--)
	{
		fin>>p.X>>p.Y;
		for(int i=1;i<n;i++)
			arie+=det(i);
		if(arie<0)
			arie=-arie;
		sol+=(arie==aria);
	}
	fout<<sol<<'\n';
	return 0;
}