您的位置:首页 > 其它

ural 2067 Friends and Berries 数学推理

2017-03-23 16:08 351 查看
熟悉的数学定理 两边之和大于第三边 必然被不成三角形,而且是对于每一个点,都要有这样的结论,所以先排序然后所有的点都在同一边上即可

#include <bits/stdc++.h>
using namespace std;
struct node
{
int x,y;
int id;
}s[301010];
int cmp(node a,node b)
{
if(a.x==b.x)
return a.y<b.y;
return a.x<b.x;
}
int main()
{
int n;
cin>>n;
int tot=0;
for(int i=0;i<n;i++)
{
scanf("%d%d",&s[i].x,&s[i].y);
s[i].id=i+1;
}
sort(s,s+n,cmp);
int ok=0;
for(int i=1;i<n-1;i++)
{
if(abs(s[i].x-s[0].x)*abs(s[n-1].y-s[i].y)!=abs(s[i].y-s[0].y)*abs(s[n-1].x-s[i].x))
{ ok=1;break;}
}
if(ok==0)
{
printf("1\n");
printf("%d %d\n",s[0].id,s[n-1].id );
}
else printf("0\n");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: