原题链接(cf):http://codeforces.com/problemset/problem/257/C
AC代码:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int cmp(const void *a, const void *b)
{
return *(double *)a > *(double *)b ? 1 : -1;
}
main()
{
double angles[100020];
int x, y, n, m;
while(scanf("%d", &m) != EOF)
{
for(int i = 0; i < m; i++)
{
scanf("%d %d", &x, &y);
angles[i] = (double) atan2(y, x) * 180 / 3.1415926535897932384;
if(angles[i] < 0)
angles[i] += 360;
}
qsort(angles, m, sizeof(double), cmp);
double result = angles[m - 1] - angles[0];
for(int i = 0; i < m - 1; i++)
if(result > 360 - angles[i + 1] + angles[i])
result = 360 - angles[i + 1] + angles[i];
printf("%.010f\n", result);
}
}