UVa 10167 Birthday Cake

题目: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=107&page=show_problem&problem=1108
直接从-500到500枚举A和B,非常简单。
#include<iostream>
#include<cmath>
#include<cstring>
#define MAXN 100
using namespace std;

int x[MAXN],y[MAXN];
int main()
{
	//freopen("in.txt","r",stdin);
	int n;
	while(cin>>n&&n)
	{
		n*=2;
		int A,B,i;
		for(i=0;i<n;i++)
			cin>>x[i]>>y[i];
		int flag=0;
		for(A=-500;A<=500;A++)
		{
			for(B=-500;B<=500;B++)
			{
				int ok=1,cnt1=0,cnt2=0;
				for(i=0;i<n;i++)
				{
					if(A*x[i]+B*y[i]==0)
					{
						ok=0;
						break;
					}
					else if(A*x[i]+B*y[i]>0)
						cnt1++;
					else cnt2++;
				}
				if(ok&&cnt1==cnt2)
				{
					cout<<A<<' '<<B<<endl;
					flag=1;
					break;
				}

			}
			if(flag==1) break;
		}
	}
	return 0;
}

你可能感兴趣的:(UVa10167,Birthday Cake)