Problem p03000 (C++)

Buggy submission (status: Runtime Error):
///////////////////////////////////////////////////////////
#include <algorithm>
#include <array>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
///////////////////////////////////////////////////////////
#define ll long long
#define ull insigned lon long
///////////////////////////////////////////////////////////
int absolute(int n);
void input(vector<int> &vec);
void print(vector<int> vec);
void upsort(vector<int> &vec);
void downsort(vector<int> &vec);
int maxvec(vector<int> vec);
int minvec(vector<int> vec);
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
int main() {
  int N, X;
  cin >> N >> X;
  vector<int> L(N);
  input(L);
  vector<int> D(N + 1);
  D.at(0) = 0;
  D.at(1) = L.at(0);
  for (int i = 0; i < N; ++i) {
    if (D.at(i) <= X && D.at(i + 1) > X) {
      cout << i + 1 << endl;
      return 0;
    }
    D.at(i + 2) = D.at(i + 1) + L.at(i + 1);
  }
  cout << N + 1 << endl;
  return 0;
}
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
int absolute(int n) {
  if (n < 0) {
    return (-n);
  }
  return n;
}

void input(vector<int> &vec) {
  for (size_t i = 0; i < vec.size(); ++i) {
    cin >> vec.at(i);
  }
}

void print(vector<int> vec) {
  for (size_t i = 0; i < vec.size(); ++i) {
    cout << vec.at(i) << " ";
  }
  cout << endl;
}

void upsort(vector<int> &vec) { sort(vec.begin(), vec.end()); }

void downsort(vector<int> &vec) {
  sort(vec.begin(), vec.end(), greater<int>());
}

int maxvec(vector<int> vec) {
  int m = vec.at(0);
  for (size_t i = 0; i < vec.size(); ++i) {
    m = max(m, vec.at(i));
  }
  return m;
}

int minvec(vector<int> vec) {
  int m = vec.at(0);
  for (size_t i = 0; i < vec.size(); ++i) {
    m = min(m, vec.at(i));
  }
  return m;
}
///////////////////////////////////////////////////////////

Fixed submission:
///////////////////////////////////////////////////////////
#include <algorithm>
#include <array>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
///////////////////////////////////////////////////////////
#define ll long long
#define ull insigned lon long
///////////////////////////////////////////////////////////
int absolute(int n);
void input(vector<int> &vec);
void print(vector<int> vec);
void upsort(vector<int> &vec);
void downsort(vector<int> &vec);
int maxvec(vector<int> vec);
int minvec(vector<int> vec);
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
int main() {
  int N, X;
  cin >> N >> X;
  vector<int> L(N);
  input(L);
  vector<int> D(N + 1);
  D.at(0) = 0;
  D.at(1) = L.at(0);
  for (int i = 0; i < N; ++i) {
    if (D.at(i) <= X && D.at(i + 1) > X) {
      cout << i + 1 << endl;
      return 0;
    }
    if (i < N - 1) {
      D.at(i + 2) = D.at(i + 1) + L.at(i + 1);
    }
  }
  cout << N + 1 << endl;
  return 0;
}
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
int absolute(int n) {
  if (n < 0) {
    return (-n);
  }
  return n;
}

void input(vector<int> &vec) {
  for (size_t i = 0; i < vec.size(); ++i) {
    cin >> vec.at(i);
  }
}

void print(vector<int> vec) {
  for (size_t i = 0; i < vec.size(); ++i) {
    cout << vec.at(i) << " ";
  }
  cout << endl;
}

void upsort(vector<int> &vec) { sort(vec.begin(), vec.end()); }

void downsort(vector<int> &vec) {
  sort(vec.begin(), vec.end(), greater<int>());
}

int maxvec(vector<int> vec) {
  int m = vec.at(0);
  for (size_t i = 0; i < vec.size(); ++i) {
    m = max(m, vec.at(i));
  }
  return m;
}

int minvec(vector<int> vec) {
  int m = vec.at(0);
  for (size_t i = 0; i < vec.size(); ++i) {
    m = min(m, vec.at(i));
  }
  return m;
}
///////////////////////////////////////////////////////////