í’€ì�´ ¶
처ì�Œì—” ë”ê°€ íš�기ì �ì�¸ 방법ì�´ ì—†ì�„까 ìƒ�ê°�ì�„ ë§Žì�´í•˜ë‹¤ê°€ 그냥 노가다로 ì§œë²„ë ¸ë‹¤^^
그런ë�° ë� 단방ì—� Acceptedê°€ ë�˜ë‹ˆ 황당하다^^
ax+by=0 ì�´ë�¼ëŠ” ì‹�ì�´ 있ì�„때, 여기ì—� x,y를 대입해서 ax+by>0ë©´ -a/bë�¼ëŠ” 기울기ì�˜ ì§�ì„ ë³´ë‹¤ 위ì—� 있는 ì �ì�´ë�¼ëŠ” 것ì�´ê³
ax+by<0ë©´ -a/bë�¼ëŠ” 기울기ì�˜ ì§�ì„ ë³´ë‹¤ 아래ì—� 있는 ì �ì�´ë‹¤.
ì�´ê²ƒì�„ ì�´ìš©í•´ì„œ a, b를 for문ì�„ 통해 변화 시켜가면서 위ì—� 있는 ì �ê³¼ 아래ì—� 있는 ì �ì�´ 개수가 똑같ì�€ 때ì�˜ 기울기를 찾는 ë°©ì‹�.
그런ë�° ë� 단방ì—� Acceptedê°€ ë�˜ë‹ˆ 황당하다^^
ax+by<0ë©´ -a/bë�¼ëŠ” 기울기ì�˜ ì§�ì„ ë³´ë‹¤ 아래ì—� 있는 ì �ì�´ë‹¤.
소스 ¶
~cpp
#include <iostream>
using namespace std;
struct Point {
int x;
int y;
};
int cherry, i, j, k, a, b;
Point ch[100];
Point getLine()
{
Point temp;
for(i=0; i<500; i++)
{
for(j=1; j<=500; j++)
{
a=0; b=0;
for(k=0; k<2*cherry; k++)
{
if((i*ch[k].x+j*ch[k].y)>0)
a++;
else if((i*ch[k].x+j*ch[k].y)<0)
b++;
}
if(a==cherry && b==cherry)
{
temp.x = i;
temp.y = j;
return temp;
}
}
for(j=-1; j>=-500; j--)
{
a=0; b=0;
for(k=0; k<2*cherry; k++)
{
if((i*ch[k].x+j*ch[k].y)>0)
a++;
else if((i*ch[k].x+j*ch[k].y)<0)
b++;
}
if(a==cherry && b==cherry)
{
temp.x = i;
temp.y = j;
return temp;
}
}
}
}
int main()
{
while(cin>>cherry)
{
if(cherry==0)
break;
for(i=0; i<2*cherry; i++)
cin >> ch[i].x >> ch[i].y;
cout << getLine().x <<" " <<getLine().y<< endl;
}
return 0;
}










