#include #include #include #include #define N_MAX (40) #define M_MAX (40) #define PI (3.14159265358979324) using namespace std; double area(double p1, double p2, double p3) { p1 *= 2.0 * PI; p2 *= 2.0 * PI; p3 *= 2.0 * PI; return (sin(p2 - p1) + sin(p3 - p2) + sin(p1 - p3)) / 2.0; } int main(void) { ifstream cin("scope.txt"); int n, m; while(cin >> n >> m) { if(n == 0 && m == 0) break; double p[N_MAX]; double Smax[M_MAX][N_MAX][N_MAX]; for(int i = 0; i < n; i++) { cin >> p[i]; } for(int h = 0; h < m; h++) { for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { Smax[h][i][j] = 0.0; } } } double Sans; for(int h = 2; h < m; h++) { Sans = 0.0; for(int i = 0; i < n; i++) { for(int j = i + h; j < n; j++) { for(int k = i + h - 1; k < j; k++) { double S = area(p[i], p[k], p[j]) + Smax[h-1][i][k]; Smax[h][i][j] = max(Smax[h][i][j], S); Sans = max(Sans, S); } } } } cout << setiosflags(ios::fixed) << setprecision(6) << Sans << endl; } return 0; }