Problem p01417 (C++) — buggy submission, verdict: Runtime Error

#include <cstdio>
#include <iostream>
#include <vector>
using namespace std;
#define EPS 0.00001
#define print                                                                  \\
  for (int i = 0; i < N; i++)                                                  \\
    cout << used[i] << " ";                                                    \\
  cout << endl;

double len(double *coord1, double *coord2) {
  double res = 0;
  for (int i = 0; i < 3; i++) {
    res += (coord1[i] - coord2[i]) * (coord1[i] - coord2[i]);
  }
  return res;
}

int comb(int vertex) {
  vertex--;
  return (vertex * (1 + vertex)) / 2;

  // int res = 0;
  // for(int i=vertex; i > 1; i--){
  //   int d = 2, n = 1;
  //   for(int j = i-1; j > 1; j--){
  //     n *= j;
  //   }
  //   res += n;
  // }
  // return res;
}

bool used[30];
double ans = 0;
int N, M;
double lenlist[30][30];
double coord[30][3];

void func(int i) {
  if (i == M) {
    vector<int> cho;
    int idx = 0;
    double l = 0;
    for (int i = 0; i < N; i++) {
      if (used[i])
        cho.push_back(i);
    }

    for (int i = 0; i < cho.size(); i++) {
      for (int j = i + 1; j < cho.size(); j++) {
        l += len(coord[cho[i]], coord[cho[j]]);
      }
    }
    ans = max(ans, l);
    return;
  }

  for (int k = 0; k < N; k++) {
    if (used[k] == true)
      break;
    used[k] = true;
    func(i + 1);
    used[k] = false;
  }
}

int main(void) {
  for (int i = 0; i < 30; i++)
    for (int j = 0; j < 30; j++)
      lenlist[i][j] = 0;
  cin >> N >> M;
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < 3; j++) {
      cin >> coord[i][j];
    }
  }
  int idx = 0;
  for (int i = 0; i < N; i++) {
    for (int j = i + 1; j < N; j++) {
      lenlist[i][j] = len(coord[i], coord[j]);
    }
  }

  for (int i = 0; i < 30; i++)
    used[i] = false;
  func(0);

  printf("%.5f\\n", ans);
  // for(int i=0; i < N; i++){
  //   for(int j=i+1; j < N; j++){
  //     cout << "lenlist[" << i << "][" << j << "] = " << lenlist[i][j] <<
  //     endl;
  //   }
  // }
  return 0;
}

Error: -11

Fixed submission:

#include <bits/stdc++.h>
using namespace std;
#define EPS 0.00001

double len(double *coord1, double *coord2) {
  double res = 0;
  for (int i = 0; i < 3; i++) {
    res += (coord1[i] - coord2[i]) * (coord1[i] - coord2[i]);
  }
  return res;
}

int comb(int vertex) {
  vertex--;
  return (vertex * (1 + vertex)) / 2;

  // int res = 0;
  // for(int i=vertex; i > 1; i--){
  //   int d = 2, n = 1;
  //   for(int j = i-1; j > 1; j--){
  //     n *= j;
  //   }
  //   res += n;
  // }
  // return res;
}

bool used[30];
double ans = 0;
int N, M;
double lenlist[30][30];
double coord[30][3];

void func(int i) {
  if (i == M) {
    vector<int> cho;
    int idx = 0;
    double l = 0;
    for (int i = 0; i < N; i++) {
      if (used[i])
        cho.push_back(i);
    }

    for (int i = 0; i < M; i++) {
      for (int j = i + 1; j < M; j++) {
        l += len(coord[cho[i]], coord[cho[j]]);
      }
    }
    ans = max(ans, l);
    return;
  }

  for (int k = 0; k < N; k++) {
    used[k] = true;
    func(i + 1);
    used[k] = false;
  }
}

int main(void) {
  for (int i = 0; i < 30; i++)
    for (int j = 0; j < 30; j++)
      lenlist[i][j] = 0;
  cin >> N >> M;
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < 3; j++) {
      cin >> coord[i][j];
    }
  }
  int idx = 0;
  for (int i = 0; i < N; i++) {
    for (int j = i + 1; j < N; j++) {
      lenlist[i][j] = len(coord[i], coord[j]);
    }
  }

  for (int i = 0; i < 30; i++)
    used[i] = false;
  func(0);

  printf("%.5f\\n", ans);
  // for(int i=0; i < N; i++){
  //   for(int j=i+1; j < N; j++){
  //     cout << "lenlist[" << i << "][" << j << "] = " << lenlist[i][j] <<
  //     endl;
  //   }
  // }
  return 0;
}