Cod sursa(job #560711)

Utilizator ZethpixZethpix Zethpix Data 18 martie 2011 17:28:51
Problema Regiuni Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <string.h>
#include <stdio.h>
#include <set>
#include <vector>

using namespace std;

int N,M,i,j,E,pow,nr;

struct dreapta
{
	int a,b,c;
}d[1002];

struct punct
{
	int x,y;
}p[1002];

vector <char> s;
set <vector<char> > v;
set <vector<char> >::iterator it;

int main()
{
	freopen("regiuni.in","r",stdin);

	scanf("%d%d",&M,&N);

	for(i=0;i<M;i++) scanf("%d%d%d",&d[i].a,&d[i].b,&d[i].c);
	for(i=0;i<N;i++) scanf("%d%d",&p[i].x,&p[i].y);

	for(i=0;i<N;i++)
	{
		s.clear();
		pow=1;
		nr=0;
		for(j=0;j<M;j++)
		{
			E=d[j].a*p[i].x+d[j].b*p[i].y+d[j].c;
			if(E<0) nr+=pow;
			pow*=2;
			if(pow>255)
			{
				s.push_back(nr);
				pow=1;
				nr=0;
			}
		}
		if(pow!=1) s.push_back(nr);

		it=v.find(s);
		if(it==v.end()) v.insert(s);
	}

	freopen("regiuni.out","w",stdout);
	printf("%d\n",v.size());

	return 0;
}