题目:http://codeforces.com/problemset/problem/850/A
题意:给你在五维空间的n个点,没有相同的点。a点bad,如果和其他两点组成的角有小于90度的情况,反之good
思路:根据抽屉定理,可以判断good的情况最多有11个点(直角和锐角肯定只能存在不同象限或者坐标轴上),再多的话肯定会有锐角的情况,这个还是三维容易看些
(其实暴力枚举可过
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int pos[1005];
struct node
{
int a[5];
}p[1005];
int main()
{
int n;
scanf("%d",&n);
for(int i = 1;i <= n;i++)
for(int j = 0;j < 5;j++)
scanf("%d",&p[i].a[j]);
if(n > 11)
return 0 * printf("0\n");
bool flag;
int sum = 0;
for(int i = 1;i <= n;i++)
{
flag = false;
for(int j = 1;j <= n;j++)
{
if(i == j) continue;
for(int k = j+1;k <= n;k++)
{
if(i == k) continue;
int t = 0;
for(int h = 0;h < 5;h++)
t += (p[i].a[h]-p[j].a[h])*(p[i].a[h]-p[k].a[h]);
if(t > 0)
{
flag = true;
break;
}
}
if(flag)
break;
}
if(!flag)
pos[++sum] = i;
}
printf("%d\n",sum);
for(int i = 1;i <= sum;i++)
printf("%d\n",pos[i]);
return 0;
}